三种情况:
1.遍历过程中stack为空
2.遍历过程中出现不匹配的项
3.遍历完后stack还有多余元素
pop()可以返回也可以不返回
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
stack=[]
for item in s:
if item=='(':
stack.append(')')
elif item=='[':
stack.append(']')
elif item=='{':
stack.append('}')
elif not stack or item !=stack[-1]:
return False
else:
stack.pop()
if stack:
return False
return True
题目二
class Solution(object):
def removeDuplicates(self, s):
"""
:type s: str
:rtype: str
"""
stack=[]
for item in s:
if not stack:
stack.append(item)
elif item==stack[-1]:
x=stack.pop()
else:
stack.append(item)
return ''.join(stack)
第三题
# class Solution(object):
# def evalRPN(self, tokens):
# """
# :type tokens: List[str]
# :rtype: int
# """
# # stack=[]
# # for token in tokens:
# # if token=='+' or token=='-'or token=='*' or token=='/':
# # n1=stack.pop()
# # n2=stack.pop()
# # if token=='+':
# # stack.append(int(n1)+int(n2))
# # elif token=='-':
# # stack.append(int(n1)-int(n2))
# # elif token=='*':
# # stack.append(int(n1)*int(n2))
# # elif token=='/':
# # stack.append(n2//n1)
# # else:
# # stack.append(int(token))
# # return stack.pop()
# from operator import add, sub, mul
from operator import add, sub, mul
class Solution:
op_map = {'+': add, '-': sub, '*': mul, '/': lambda x, y: int(x / y)}
# 创建一个操作字典
def evalRPN(self, tokens):
stack = []
for token in tokens:
if token not in {'+', '-', '*', '/'}:
stack.append(int(token))
else:
op2 = stack.pop()
op1 = stack.pop()
stack.append(self.op_map[token](op1, op2)) # 第一个出来的在运算符后面
return stack.pop()
消消乐
lambda匿名函数
Python 之 lambda 函数完整详解 & 巧妙运用_lamda函数python-CSDN博客python中的lambda函数与sorted函数_sorted lambed-CSDN博客
使用lambda与map,reduce,sorted配合,实现函数式编程