844.比较含退格的字符串

题目:844. 比较含退格的字符串 - 力扣(LeetCode)

思路:首先要知道这个#的意思是可以将前面一个数清空,(当时 我以为是将前面一串清空。。。看了半天),由于 # 号只会消除左边的一个字符,所以对右边的字符无影响,所以我们选择从后往前遍历 S,T 字符串,以skipS和T去记录,可以清空前面的数,实际上也是在两个数组中移动,用了双指针算法

图示:

代码:

class Solution {
public:
    bool backspaceCompare(string S, string T) {
       int i = S.length()-1,j = T.length()-1;
       int skipS = 0,skipT = 0;
       while(i >= 0 || j >= 0)
       {
          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;
          }
          i--,j--;
       }
    return true;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值