用 Python 编写一个程序,在删除不同的相邻位后找到最短的字符串

pythonserver side programmingprogramming更新于 2026/1/6 22:04:17

假设我们有一个二进制字符串 s,我们可以删除任何两个相邻的字母,如果它们不同。最后,我们必须找到如果我们能够根据需要多次执行此操作,我们可以得到的最小字符串的长度。

因此,如果输入为 s = "1100011",则输出将为 1,因为删除 "10" 后我们得到"10011",然后再次删除"10",它将变成"011",然后删除"01",它将剩下1。

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

  • 堆栈:=一个新列表
  • 对于s中的每个c,执行
    • 如果堆栈为空或堆栈顶部与c相同,则
      • 将c推入堆栈
    • 否则,当堆栈顶部与c不同时,则
      • 从堆栈中弹出元素
  • 返回堆栈中的元素计数

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

示例

class Solution:
   def solve(self, s):
      stack = []
      for c in s:
         if not stack or stack[-1] == c:
            stack.append(c)
         elif stack[-1] != c:
            stack.pop()
      return len(stack)
ob = Solution() print(ob.solve("1100011"))

输入

"1100011"

输出

1

相关文章


有用资源