LeetCode.20 有效的括号
思路: 遍历给定字符串,左括号直接入栈。右括号尝试与栈顶元素匹配,若匹配则出栈,继续遍历下一个。否则return False,直到遍历结束,若栈没有多余的左括号则return True
dic = {'(':')', '[':']', '{':'}'}
stack = []
for i in s:
if i in dic:
stack.append(i)
elif stack and dic[stack[-1]] == i:
stack.pop()
else:
return False
return not stack
LeetCode.1047 删除字符串中的所有相邻重复项
思路: 和上一题类似的做法
stack = []
for i in s:
if stack and i == stack[-1]:
stack.pop()
else:
stack.append(i)
return ''.join(stack)
LeetCode.150. 逆波兰表达式求值
思路: 还是使用栈
stack = []
a = ['+', '-', '*', '/']
for i in tokens:
if i in a:
if i == '+':
res = stack[-2]+stack[-1]
elif i == '-':
res = stack[-2]-stack[-1]
elif i == '*':
res = stack[-2]*stack[-1]
else:
res = int(stack[-2]/stack[-1])
stack.pop()
stack.pop()
stack.append(res)
else:
stack.append(i)
return stack[-1]