leetcode844

class Solution:
    def backspaceCompare(self, s: str, t: str) -> bool:
        i = len(s) - 1
        j = len(t) - 1
        skips, skipt = 0, 0
        while i >= 0 or j >= 0:  # 只要s,t有一个没处理完,就继续进行处理。
            while i >= 0:
                if s[i] == '#':  # 当i对应的值是#时,标记+1,i向左移动。相当于把#所在位置跳过
                    skips += 1
                    i -= 1
                elif skips > 0:  # 当标记大于1的时候,标记-1,i继续左移,相当于把#前的字符跳过。这样就能实现退格效果。
                    skips -= 1
                    i -= 1
                else:  # 这个else的意思就是,这个位置的字符既不是#,此时标记skips也是0,那么这个时候,我们就需要判断,这个值是不是和字符串t中的最右面的值相等。这个时候,就要把i的循环先break一下,对j进行判断。
                    break
            while j >= 0:  # 同上。
                if t[j] == '#':
                    skipt += 1
                    j -= 1
                elif skipt > 0:
                    skipt -= 1
                    j -= 1
                else:
                    break
            if i>=0 and j>=0:#当都大于等于0的时候,说明大家长度相同。
                if s[i] != t[j]:  # 只要s,t有一个对不上的,就直接返回False。如果对于这一个判断相等,那么i,j都向左移动,继续判断。
                    return False
            elif i>=0 or j>=0:#这意味着有一个可能已经超出边界了,即这两个字符串退格操作后,长度不等。
                return False
            i -= 1
            j -= 1
        return True

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值