今天是刷LT的第二天,好好干饭,好好努力,好好加油哦!
leetcode题目3:
检查是否所有括号都已配对。即是否刚好完全配对好
- 左括号必须用相同类型的右括号闭合
- 左括号必须以正确的顺序闭合
例子如下:
输入:s = "([)]"
输出:false
输入:s = "()[]{}"
输出:true
首先将所有的括号符号列出来,作为一个配对
dic = {’{’: ‘}’, ‘[’:’]’, ‘(’:’)’,’?’:’?’}
要检查是否所有的括号都配对好
首先是先把开始出现的符号 收集在在一个列表
如果出现了配对的符号,则pop出去那个符号。
一直这样做下去,直到最后,如果列表剩下问号
则表示刚刚好完全配对。
如果还有剩的符号,则表示没有完全配对。
首先要理解pop函数的用法
pop() 函数用于移除列表中的一个元素(默认最后一个元素)
并且返回该元素的值。
test = ['Google', 'Runoob', 'Taobao']
list_pop=test.pop()
print( "删除的项为 :", list_pop)
print( "列表现在为 : ", test)
输出为:
删除的项为 : Taobao
列表现在为 : ['Google', 'Runoob']
也可以指定pop走哪一个
test = ['Google','Runoob','Taobao']
list_pop=test.pop(1)
print( "删除的项为 :", list_pop)
print( "列表现在为 : ", test)
输出为:
删除的项为 : Runoob
列表现在为 : ['Google', 'Taobao']
所以现在利用pop函数,如果匹配的话就pop出去元素
def isValid(s: str) -> bool:
‘’‘
s是需要检查的字符
返回是否配对成功
’‘’
dic = {'{': '}', '[':']', '(':')','?':'?'} #列出所有的括号配对
stack = ['?'] #列表中有问号
for c in s: #对于字符s里 每个符号
if c in dic:
#如果在dic字典里的前面,即keys:'{','[','(','?',则录入stack里
stack.append(c)
elif dic[stack.pop()]!=c:
#否则就是dic的values,即'}', ']', ')','?'
#这个时候,就要pop出相对应的keys 即 dic[stack.pop()],顺序也很重要
return False
return len(stack) == 1 #最后只剩问号