844. 比较含退格的字符串【JavaScript】

给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。

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

示例 1:

输入:S = “ab#c”, T = “ad#c”
输出:true
解释:S 和 T 都会变成 “ac”。
示例 2:

输入:S = “ab##”, T = “c#d#”
输出:true
解释:S 和 T 都会变成 “”。
示例 3:

输入:S = “a##c”, T = “#a#c”
输出:true
解释:S 和 T 都会变成 “c”。
示例 4:

输入:S = “a#c”, T = “b”
输出:false
解释:S 会变成 “c”,但 T 仍然是 “b”。

提示:

1 <= S.length <= 200
1 <= T.length <= 200
S 和 T 只含有小写字母以及字符 ‘#’。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/backspace-string-compare

这道题目我是偶然在b站看了一位up主的解题思路后做的,给两个统计名sspace和tspace,通过从后向前对比,遇到#号就使其加1,反之减1,都为0时则对两个字符串的对应位进行对比,有不一样的就返回为false。
代码如下:

        /**
         * @param {string} S
         * @param {string} T
         * @return {boolean}
         */
        var backspaceCompare = function(S, T) {
            var i=S.length-1;
            var j=T.length-1;;
            var sspace=0;
            var tspace=0;
            while(i>=0||j>=0){
            while(i>=0){
                if(S[i]=='#'){
                sspace++;
                i--;
            }else if(sspace>0){
                sspace--;
                i--;
            }else{
                break;
            }
        }
        while(j>=0){
            if(T[j]=='#'){
                tspace++;
                j--;
            }else if(tspace>0){
                tspace--;
                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;
            };

在看了其他人的解法后,我觉得利用正则表达式做确实更简单一些。比如这位老哥的代码,给大家参考一下:

/**
 * @param {string} S
 * @param {string} T
 * @return {boolean}
 */
var backspaceCompare = function(S, T) {
    let reg = /[a-z](?=\#)\#/g;
    S = S.replace(/^\#/,'').replace(reg, '');
    T = T.replace(/^\#/,'').replace(reg, '');
    if(!S.includes('#') && !T.includes('#')){
        return S == T;
    }
    return backspaceCompare(S, T);
};

作者:caoyq0521
链接:https://leetcode-cn.com/problems/backspace-string-compare/solution/bi-jiao-han-tui-ge-de-zi-fu-chuan-by-caoyq0521/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值