拖账了,补卡
Day 11 栈与队列
1. 有效的括号
①使用字典
class Solution:
def isValid(self, s: str) -> bool:
dic = {'(':')', '[':']', '{':'}'}
stack = []
for i in s:
if i in dic.keys():
stack.append(dic[i])
elif not stack or stack[-1] != i:
return False
else:
stack.pop()
return True if not stack else False
2. 删除字符串中的所有相邻重复项
class Solution:
def removeDuplicates(self, s: str) -> str:
stack = []
for i in range(len(s)):
# 如果栈不为空并且栈顶和当前元素不一样就入栈
if (not stack) or stack[-1] != s[i] :
stack.append(s[i])
else:
stack.pop()
return ''.join(stack)
3. 逆波兰表达式求值
from operator import add, sub, mul
class Solution:
ops = {"+":add, "-":sub, "*":mul, "/":lambda x,y :int(x/y)}
def evalRPN(self, tokens: List[str]) -> int:
stack = []
for i in tokens:
if i not in self.ops.keys():
stack.append(int(i))
else:
op1 = stack.pop()
op2 = stack.pop()
stack.append(self.ops[i](op2,op1))
return stack[-1]