【LeetCode思路+优化】1047删除字符串中的所有相邻重复项

round 1

1 遍历字符串,如何和栈顶元素相同:出栈,如果和栈顶元素不同:入栈。

class Solution:
    def removeDuplicates(self, S: str) -> str:
        stack = []
        
        for x in S:
            if len(stack) == 0 or x != stack[-1]:
                stack.append(x)
            else:
                stack.pop()

        return ''.join(stack[:])

时间负责度为O(n),运行速度依然稀碎,看来代码能力还是有点差的
在这里插入图片描述

round 2

1 在设置列表时,在其中加任意字符,可以省去判断空集步骤
2 判断空集在每次循环中都要首先运行,占用时间较多

class Solution:
    def removeDuplicates(self, S: str) -> str:
        stack = [',']
        
        for x in S:
            if x != stack[-1]:
                stack.append(x)
            else:
                stack.pop()
                
        return ''.join(stack[1:])

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值