class Solution:
def isValid(self, s: str) -> bool:
#三种情况,左括号多栈不为空,右括号多,提前为空,不匹配
_stack=[]
_dict = {'(':')','[':']','{':'}'}
for i in list(s):
if i in _dict:
_stack.append(_dict[i])
else:
if _stack==[] or i !=_stack[-1]:
return False
else:
_stack.pop()
if _stack != [] :
return False
else:
return True
class Solution:
def removeDuplicates(self, s: str) -> str:
stack =[]
s = list(s)
for i in s:
if stack and i ==stack[-1]:
stack.pop()
else:
stack.append(i)
return ''.join(stack)
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
stack = []
_list =['+','-','*','/']
for i in tokens:
if i in _list:
num1=int(stack.pop())
num2=int(stack.pop())
if i =='+':
stack.append(num1+num2)
elif i =='-':
stack.append(num2-num1)
elif i =='*':
stack.append(num1*num2)
else:
stack.append(num2/num1)
else:
stack.append(i)
return int(stack[0])
栈一般用来消除相同元素