Leetcode---844 比较含退格的字符串(python)

比较含退格的字符串

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

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

思路

  1. 运用了栈的思想,将字母存进栈中,遇到"#",弹出栈顶的元素
  2. 最后比较两个栈是否相等

新学到的

  1. 比较两个栈是否相等可以直接return res1 == res2
  2. 当对两个字符串的操作一样的时候可以用一个函数def func(s)
  3. res[:-1]表示除了最后一个的所有字符串

对比

自己写的
class Solution(object):
    def backspaceCompare(self, S, T):
        """
        :type S: str
        :type T: str
        :rtype: bool
        """
        res1 = []
        res2 = []
        for i in range(len(S)):
            if S[i] == "#":
                if not res1 ==[]:
                    res1.pop()
                else:
                    res1 = []
            else:
                res1.append(S[i])
        for j in range(len(T)):
            if T[j] == "#":
                if not res2 ==[]:
                    res2.pop()
                else:
                    res2 = []
            else:
                res2.append(T[j])
        return res1 == res2
别人写的—更加简洁
class Solution(object):
    def backspaceCompare(self, S, T):
        def func(s):
            res = ''
            for x in S:
                if x == "#":
                    res = res[:-1]
                else:
                    res += x
        return res 
    return func(S) == func(T)
                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值