python用数据结构栈实现消消乐代码
时间: 2023-12-05 19:04:54 浏览: 104
Python小游戏源码-宝石消消乐游戏源码
5星 · 资源好评率100%
好的,以下是用Python实现消消乐的栈数据结构代码:
```
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[-1]
def size(self):
return len(self.items)
def match(left, right):
if left == "(" and right == ")":
return True
elif left == "{" and right == "}":
return True
elif left == "[" and right == "]":
return True
else:
return False
def is_balanced(paren_str):
s = Stack()
is_balanced = True
index = 0
while index < len(paren_str) and is_balanced:
paren = paren_str[index]
if paren in "{[(":
s.push(paren)
else:
if s.is_empty():
is_balanced = False
else:
top = s.pop()
if not match(top, paren):
is_balanced = False
index += 1
if s.is_empty() and is_balanced:
return True
else:
return False
```
这里,我们使用了一个栈(Stack)实现了一个消消乐的代码。在这个代码中,我们定义了常见的三个括号类型(圆括号,花括号和方括号)以及相似的匹配(match)函数,在这个函数中我们用于比较左括号和右括号是否匹配。
接下来我们定义了一个is_balanced函数,该函数使用了一个栈(Stack)来检查给定字符串中的括号是否完全匹配。我们通过迭代(e.g. while循环)来读取每个左括号,并将其压入(Stack)。每当遇到右括号时,我们弹出(Stack)并检查两个括号是否匹配。如果它们不匹配或(Stack)为空,我们返回False。最后,我们检查(Stack)是否为空以验证在给定字符串中的括号是否匹配。如果(Stack)为空,则返回True。
阅读全文