美文网首页
LeetCode 844. 比较含退格的字符串

LeetCode 844. 比较含退格的字符串

作者: 草莓桃子酪酪 | 来源:发表于2022-07-07 12:01 被阅读0次
题目

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

方法一:栈

栈即只能在一端进行插入和删除操作。所以此题可以使用栈的思路。

class Solution(object):
    def get_string(self, n):
        stack = []
        for i in range(len(n)):
            if n[i] != "#":
                stack.append(n[i])
            elif len(stack) > 0:
                stack.pop()
        return str(stack)

    def backspaceCompare(self, s, t):
        return self.get_string(s) == self.get_string(t)
方法二:双指针

思路:
一个字符是否会被删掉,只取决于该字符后面的退格符,而与该字符前面的退格符无关。因此当我们逆序地遍历字符串,就可以立即确定当前字符是否会被删掉。

设 skipS 和 skipT 为 # 字符的个数。
循环字符串 s 和 t,并且再通过内部的循环来从后向前寻找有意义的字母,并进行比较。
在内部循环中,需要对此次的字符进行判断:

  • 若为 #, 则skipS + 1并继续循环;
  • 若此时skipS > 0,表示此时还有 # 未发挥作用,即此字符不在判断两字符串是否相等的范围内,则skipS - 1并继续循环;
  • 直至循环到一个有意义的字符。
    最后一次次判断获取的两个有意义的字符是否相等。
class Solution(object):
    def backspaceCompare(self, s, t):
        i = len(s) - 1
        j = len(t) - 1
        skipS = skipT = 0 

        while i>=0 or j>=0:
            while i >= 0:
                if s[i] == "#":
                    skipS = skipS + 1
                    i = i - 1
                elif skipS > 0:
                    skipS = skipS - 1
                    i = i - 1
                else:
                    break
            while j >= 0:
                if t[j] == "#":
                    skipT = skipT + 1
                    j = j - 1
                elif skipT > 0:
                    skipT = skipT - 1
                    j = j - 1
                else:
                    break
            if i>=0 and j>=0:
                if s[i] != t[j]:
                    return False
            elif i>=0 or j>=0:
                return False
            i = i - 1
            j = j - 1
        return True

相关知识
  • append():
    尾部添加元素
  • pop():
    删除尾部元素
参考

代码相关:https://programmercarl.com/
Leetcode官方解题

相关文章

网友评论

      本文标题:LeetCode 844. 比较含退格的字符串

      本文链接:https://www.haomeiwen.com/subject/jocmprtx.html