Python 中删除连续重复字符后查找字符串的程序

pythonserver side programmingprogramming更新于 2026/2/3 6:04:17

假设我们有一个字符串 s,我们反复删除第一个连续的重复字符。我们必须找到最终的字符串。

因此,如果输入为 s = "xyyyxxz",则输出将为 "z",因为 "yyy" 是将被删除的第一个连续重复字符。所以我们有 "xxxz"。然后将 "xxx" 删除以最终得到 "z"。

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

  • stack := a new stack
  • i := 0
  • while i < s 的大小,执行
    • 如果堆栈不为空且堆栈顶部与 s[i] 相同,则
      • x := 从堆栈中删除最后一个元素
      • 当 i < s 的大小且 x 与 s[i] 相同时,执行
        • i := i + 1
      • i := i - 1
    • 否则,
      • push s[i] into stack
    • i := i + 1
  • 加入堆栈元素后返回

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

示例

class Solution:
   def solve(self, s):
      stack = []
      i = 0
      while i < len(s):
         if len(stack) and stack[-1] == s[i]:
            x = stack.pop()
            while i < len(s) and x == s[i]:
               i += 1
            i -= 1
            else:
               stack.append(s[i])
            i += 1
      return "".join(stack)
ob = Solution()
s = "xyyyxxz"
print(ob.solve(s))

输入

"xyyyxxz"

输出

z

相关文章


有用资源