有效括号字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 注意空字符串可被认为是有效字符串。
举例:
((())): True
((()): False
(())): False
class Stack(object) :
def __init__(self,limit=10) :
self.stack = [] # 存放元素
self.limit = limit # 栈容量
# 进栈
def push(self,data):
if len(self.stack) >= self.limit:
print('stackOverflowError')
pass
else:
self.stack.append(data)
def pop(self):
if self.stack :
return self.stack.pop()
else:
raise IndexError('po from an empty stack')
def top(self):
if self.stack :
return self.stack[-1]
def is_empty(self):
return not bool(self.stack)
def size(self):
return len(self.stack)
def balanced_parenthess(parenteses) :
stack = Stack(len(parenteses))
for parentesis in parenteses :
if parentesis == '(':
stack.push(parentesis)
elif parentesis == ')' :
if stack.is_empty():
return False
stack.pop()
return stack.is_empty()
if __name__ == '__main__' :
examples = ['((()))','((())','(()))']
for example in examples:
print(example +" : " + str(balanced_parenthess(example)))