20. 有效的括号:
代码思路
class Solution:
def isValid(self, s: str) -> bool:
from collections import deque
stack = deque()
s_lis = list(s)
dic = {"(":")","[":"]","{":"}"}
for i in range(len(s_lis)):
if i == 0:
if s_lis[i] in dic.keys():
stack.append(s_lis[i])
else:
return False
else:
if s_lis[i] in dic.keys():
stack.append(s_lis[i])
else:
if stack:
pop_char = stack.pop()
if dic[pop_char] == s_lis[i]:
continue
else:
return False
else:
return False
if stack:
return False
else:
return True
1047. 删除字符串中的所有相邻重复项:
代码思路
class Solution:
def removeDuplicates(self, s: str) -> str:
from collections import deque
stack = deque()
s_lis = list(s)
for i in range(len(s)):
if i == 0:
stack.append(s_lis[i])
else:
if stack:
top = stack[-1]
if top == s_lis[i]:
stack.pop()
else:
stack.append(s_lis[i])
else:
stack.append(s_lis[i])
return "".join(stack)tack2.pop()
while self.stack2:
self.stack1.append(self.stack2.pop())
return return_num
def peek(self) -> int:
while self.stack1:
self.stack2.append(self.stack1.pop())
return_num = self.stack2[-1]
while self.stack2:
self.stack1.append(self.stack2.pop())
return return_num
def empty(self) -> bool:
if len(self.stack1) == 0:
return True
else:
return False
150. 逆波兰表达式求值:
代码思路
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
from collections import deque
stack = deque()
char = ["+","-","*","/"]
for i in tokens:
if i not in char:
stack.append(i)
else:
num1 = int(stack.pop())
num2 = int(stack.pop())
if i == "+":
new_num = num1 + num2
elif i == "-":
new_num = num2 - num1
elif i == "*":
new_num = num1 * num2
else:
if num2 / num1 > 0:
new_num = num2 // num1
else:
new_num = int(num2 / num1)
stack.append(str(new_num))
return int(stack[-1])