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

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

创新互联主营雅安网站建设的网络公司,主营网站建设方案,手机APP定制开发,雅安h5小程序开发搭建,雅安网站营销推广欢迎雅安等地区企业咨询

一、题目内容

给出由小写字母组成的字符串 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如何删除字符串中的所有相邻重复项”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


分享名称:leetcode如何删除字符串中的所有相邻重复项
地址分享:http://azwzsj.com/article/ghigos.html