Python程序:移除相邻不同位后找到最短字符串
假设我们有一个二进制字符串s,如果两个相邻字符不同,我们可以删除它们。最终,我们需要找到如果可以执行此操作任意多次,我们可以获得的最短字符串的长度。
因此,如果输入类似于s = "1100011",则输出将为1,因为删除“10”后得到“10011”,然后再次删除“10”,它将变为“011”,然后删除“01”,剩下1。
为了解决这个问题,我们将遵循以下步骤:
- stack := 新建一个列表
- 对于s中的每个字符c,执行以下操作:
- 如果stack为空或stack的顶部与c相同,则
- 将c压入stack
- 否则,如果stack的顶部与c不同,则
- 从stack中弹出元素
- 如果stack为空或stack的顶部与c相同,则
- 返回stack中元素的个数
让我们看看下面的实现来更好地理解:
示例
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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP