简单版:
def judge(string):
left = 0
for i in string:
if i == '(':
left += 1
else:
left -= 1
if left <0:
return False
return left == 0
复杂版:
def judge(sentence):
stack = Stack()
# 把后括号映射成前括号
dict = {'}':'{', ']':'[', ')':'('}
for i in sentence:
# 左括号全部放进栈里
if i == '[' or i == '{' or i == '(':
stack.push(i)
elif i == ']' or i == '}' or i == ')':
#遍历到右括号时,发现栈是空的,没有左括号
if stack.is_empty():
return False
#遍历到右括号时,和栈里取出来的数据对不上
elif stack.pop() != dict[i]:
return False
#遍历完表达式后,要再次判断一下栈是否排空了
return stack.is_empty()