力扣 844. 比较含退格的字符串

题目描述:

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,请你判断二者是否相等。# 代表退格字符。
如果相等,返回 true ;否则,返回 false 。
注意:如果对空文本输入退格字符,文本继续为空。

解析:

alt

1.定义两个指针i和j,分别从后往前遍历字符串s和t,定义两个字符串的空格数初始为0。
2.while循环,分为三种情况,
第一种,当指针i遇到空格符时,则空格数加1,i--;
第二种,当指针i遇到字母时,但空格数不为零,则空格数减1,i--;
第三种,当指针i遇到字母时, 空格数也为零,则break跳出循环;
指针j同理
3.当i和j同时指的是字母时,则判断两个字母是否相同,
如果不相同,则返回false,如果相同,则i--、j--,当 i< 0 && j >= 0 或者 i >= 0 && j < 0时(i和j是不能比较的),则返回false,继续往前遍历,如果遍历完字符串都是相同,则返回ture。

Java:

public boolean backspaceCompare(String s, String t) {
        int i = s.length() - 1, j = t.length() - 1;
        int backspaceS = 0, backspaceT = 0;
        while(i >= 0 || j >= 0) {
            while(i >= 0) {
                if(s.charAt(i) == '#') {
                    backspaceS++;
                    i--;
                } else if(backspaceS > 0) {
                    backspaceS--;
                    i--;
                } else {
                    break;
                }
            }
            while(j >= 0) {
                if(t.charAt(j) == '#') {
                    backspaceT++;
                    j--;
                } else if(backspaceT > 0) {
                    backspaceT--;
                    j--;
                } else {
                    break;
                }
            }
            if(i >= 0 && j >= 0) {
                if(s.charAt(i) != t.charAt(j)) {
                    return false;
                }
            } else {
                if((i < 0 && j >= 0) || (i >= 0 && j < 0)) {
                    return false;
                }
            }
            i--;
            j--;
        }
        return true;
    }

JavaScript:

var backspaceCompare = function(s, t) {
    let i = s.length - 1, j = t.length - 1;
    let backspaceS = 0, backspaceT = 0;
    while(i >= 0 || j >= 0) {
        while(i >= 0) {
            if(s[i] === "#") {
                backspaceS++;
                i--;
            } else if(backspaceS > 0) {
                backspaceS--;
                i--;
            } else {
                break;
            }
        }
        while(j >= 0) {
            if(t[j] === "#") {
                backspaceT++;
                j--;
            } else if(backspaceT > 0) {
                backspaceT--;
                j--;
            } else {
                break;
            }
        }
        if(s[i] !== t[j]) {
            return false;
        }
        if((i < 0 && j >= 0) || (i >= 0 && j < 0)) {
            return false;
        }
        i--;
        j--;
    }
    return true;
};
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务