第一题
题目描述:
https://leetcode.cn/problems/valid-parentheses/
思路:
具体代码如下:
class Solution:
def isValid(self, s: str) -> bool:
stack = list()
for i in s:
cond = i == '(' or i =='[' or i =='{'
if not stack or cond:
stack.append(i)
else:
top = stack[-1]
if i == ')' and top == '(':
stack.pop()
elif i == ']' and top == '[':
stack.pop()
elif i == '}' and top == '{':
stack.pop()
else:
return False
if len(stack) == 0:
return True
return False
if __name__ == '__main__':
obj = Solution()
s = '(])'
print(obj.isValid(s))
第二题
题目描述:
https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/
思路:
具体代码如下:
class Solution:
def removeDuplicates(self, s: str) -> str:
stack = list()
for i in s:
if stack and i == stack[-1]:
stack.pop()
else :
stack.append(i)
return "".join(stack)
if __name__ == '__main__':
obj = Solution()
s = 'abbaca'
print(obj.removeDuplicates(s))
第三题
题目描述:
https://leetcode.cn/problems/evaluate-reverse-polish-notation/
思路:
具体代码如下:
from typing import List
from operator import add, sub, mul
class Solution:
op_map = {'+': add, '-': sub, '*': mul, '/': lambda x, y: int(x / y) }
def evalRPN(self, tokens: List[str]) -> int:
stack = list()
for item in tokens:
if item not in {'+', '-', '*', '/'}:
stack.append(int(item))
else:
op2 = stack.pop()
op1 = stack.pop()
stack.append(self.op_map[item](op1, op2))
return stack.pop()
if __name__ == '__main__':
obj = Solution()
token = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"]
print(obj.evalRPN(token))