LeetCode刷题之1047. 删除字符串中的所有相邻重复项

LeetCode刷题之1047. 删除字符串中的所有相邻重复项

我不知道将去向何方,但我已在路上!
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 !
  • 题目
    给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
  • 示例
示例 1 :
输入:"abbaca"
输出:"ca"
解释:例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。
  • 提示
    1. 1 <= S.length <= 20000
    2. S 仅由小写英文字母组成。
  • 代码1:
class Solution:
    def removeDuplicates(self, S: str) -> str:
        a = []
        for i in range(len(S)):
            if a == [] or a[-1] != S[i]:
                a.append(S[i])
                continue
            elif a[-1] == S[i]:
                a.pop()
                continue
        return(''.join(a))
# 执行用时 :156 ms, 在所有 Python3 提交中击败了33.75%的用户
# 内存消耗 :13.9 MB, 在所有 Python3 提交中击败了100.00%的用户
  • 算法说明:
    建立一个空栈a,存储S中的元素,如果S中当前元素和a的栈顶的元素相等,删除栈顶元素a[-1];如果S的当前元素和a的栈顶元素不相等或者a为空时,将S的当前元素添加到a中,直到遍历完S中所有的元素,将a中的元素用字符串格式输出!

猜你喜欢

转载自blog.csdn.net/qq_34331113/article/details/106708134