leetcode如何删除字符串中的所有相邻重复项

这篇文章主要为大家展示了“leetcode如何删除字符串中的所有相邻重复项”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“leetcode如何删除字符串中的所有相邻重复项”这篇文章吧。

一、题目内容

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。

在 S 上反复执行重复项删除操作,直到无法继续删除。

在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

示例:

输入:"abbaca"
输出:"ca"
解释:
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。

提示:

1 <= S.length <= 20000
S 仅由小写英文字母组成。

二、解题思路

用栈做,从左到右遍历,每次存储当前字符,如果当前字符和栈中刚入栈的字符一致,则直接pop剔除,然后再看下一个字符,如此循环,直到遍历结束。

三、代码

class Solution:
    def removeDuplicates(self, S: str) -> str:
        res = []
        for s in S:
            if res and res[-1] == s:
                res.pop()
            else:
                res.append(s)
        return "".join(res)


if __name__ == '__main__':
    s = Solution()
    S = "abbaca"
    ans = s.removeDuplicates(S)
    print(ans)

以上是“leetcode如何删除字符串中的所有相邻重复项”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注蜗牛博客行业资讯频道!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论电报频道链接