844. 比较含退格的字符串

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

示例 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
  • ST 只含有小写字母以及字符 #

思路:

  • 用辅助栈解决
  • 分别遍历字符串S和T,当字符为#时,从栈中弹出栈顶元素(等于删除)
  • 注意当栈为空时,字符为#时不进行操作
class Solution(object):
    def backspaceCompare(self, S, T):
        """
        :type S: str
        :type T: str
        :rtype: bool
        """
        stack_s, stack_t = [], []
        
        for char in S:
            if char == '#' and stack_s:
                stack_s.pop()
            if char != '#':
                stack_s.append(char)
        
        for char in T:
            if char == '#' and stack_t:
                stack_t.pop()
            if char != '#':
                stack_t.append(char)
        
        return stack_s == stack_t
posted @ 2018-09-21 22:19  yuyin  阅读(92)  评论(0编辑  收藏  举报