在Python中删除字符串中的所有相邻重复项

假设我们有一个小写字母的字符串S;将执行重复删除操作。这可以通过选择两个相邻且相等的字母并将其删除来完成。

我们将反复从S中删除重复项,直到没有重复项为止。

完成所有这些重复的删除操作后,返回字符串。可以保证答案是唯一的。

假设字符串是“ abbacaca”,则答案将是“ caca”。首先删除副本bb,然后字符串为“ aacaca”,然后删除aa,然后字符串为“ caca”,然后没有此类副本。

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个数组st,并初始化i:= 0

  • 而我<字符串的长度-

    • 如果st有某个元素,并且st的最后一个元素= st [i],则将i加1,并从st中删除最后一个元素

    • 否则将string [i]添加到st中,将i增加1

  • 最后将st中的所有元素作为字符串连接并返回

示例

让我们看下面的实现以更好地理解-

class Solution(object):
   def removeDuplicates(self, S):
      st = []
      i = 0
      while i < len(S):
         if len(st)!=0 and st[-1]==S[i]:
            i+=1
            st.pop(-1)
         else:
            st.append(S[i])
            i+=1
      return "".join(i for i in st)
ob1 = Solution()print(ob1.removeDuplicates("abbacaca"))

输入值

"abbacaca"

输出结果

"caca"