用 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不同时,则
- 从堆栈中弹出元素
- 如果堆栈为空或堆栈顶部与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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

