代码随想录算法训练营Day11
20. Valid Parentheses
括号匹配是使用栈解决的经典问题.
class Solution:
def isValid(self, s: str) -> bool:
# 睿智
stack = []
for item in s:
if item == '(':
stack.append(')')
elif item == '[':
stack.append(']')
elif item == '{':
stack.append('}')
elif not stack or stack[-1] != item:
return False
else:
stack.pop()
return True if not stack else False
1047. Remove All Adjacent Duplicates In String
提示使用栈
标准代码:
class Solution:
def removeDuplicates(self, s: str) -> str:
# 提示使用栈解决
stack = []
for letter in s:
if stack and letter == stack[-1]:
stack.pop()
else:
stack.append(letter)
return "".join(stack)
150. Evaluate Reverse Polish Notation
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
if len(tokens) == 1:
return int(tokens[0])
res = 0
stack = []
for ele in tokens:
if ele not in ["+", "-", "*", "/"]:
stack.append(ele)
else:
b = int(stack.pop())
a = int(stack.pop())
if ele == "+":
res = a + b
elif ele == "-":
res = a - b
elif ele == "*":
res = a * b
elif ele == "/":
res = int(a / b)
stack.append(res)
return res