2025/3/4 【栈与队列】LeetCode1047. 删除字符串中的所有相邻重复项 【√】

1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode)

代码随想录

这题做的没有乐趣

1.使用栈

复制代码
class Solution:
    def removeDuplicates(self, s: str) -> str:
        stack = []
        for char in s:
            if stack and stack[-1] == char:
                stack.pop()
            else:
                stack.append(char)
        
        return ''.join(stack)   
复制代码

 2.用双指针模拟栈。

如果不让用栈可以作为备选方法。

这个方法不错。

复制代码
class Solution:
    def removeDuplicates(self, s: str) -> str:
        res = list(s) 
        n = len(s)
        slow = fast = 0

        while fast < n:
            # 如果一样直接换,不一样会把后面的填在slow的位置
            res[slow] = res[fast]
            # 如果发现和前一个一样,就退一格指针
            if slow > 0 and res[slow] == res[slow-1]:
                slow -= 1
            else:
                slow += 1
            fast += 1
        
        return ''.join(res[:slow])
复制代码
posted @   axuu  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示