Leetcode-884-比较含退格的字符串

122 阅读1分钟

题目

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,请你判断二者是否相等。# 代表退格字符。

如果相等,返回 true ;否则,返回 false 。

注意:如果对空文本输入退格字符,文本继续为空。

题解

使用双指针,倒序遍历

var backspaceCompare = function(s, t) {
    s = s.split('')
    t = t.split('')
    let skipS = 0, skipT = 0;
    for(let i = s.length-1 ,j=t.length-1; i>=0 || j>= 0;j--,i--){
        while(i>=0){
            if(s[i] === '#'){
                skipS++;
                i--;
            }else if(skipS > 0){
                skipS--;
                i--;
            }else{
                break;
            }
        }
        while(j>=0){
            if(t[j] === '#'){
                skipT++;
                j--
            }else if (skipT > 0){
                skipT--;
                j--;
            }else{
                break;
            }
        }
        if(i>=0 && j>=0){
            if(s[i] !== t[j]){
                return false;
            }
        }else if(i >= 0 || j >= 0){
            return false;
        }
    }
    return true
};