自己用的简单if else语法写的,虽然通过了但可读性很差,后来借鉴精选代码,学到了很多。贴一下题目、我的初始做法(代码一)以及官方精选做法(代码二)。
力扣题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
class Solution(object):
def isValid(self, s):
count=len(s);
k=0;
a=[0]*count;
if count%2!=0:
return False;
else:
for i in range(count):
if s[i]=="(" or s[i]=="{" or s[i]=="[":
a[k]=s[i];
k=k+1;
#print(k);
else:
if s[i]=="]" and a[k-1]=="[":
k=k-1;
else:
if s[i]==")" and a[k-1]=="(":
k=k-1;
else:
if s[i]=="}" and a[k-1]=="{":
k=k-1;
else:
return False;
if k==0:
return True;
else:
return False;
class Solution:
def isValid(self, s) :
dic = {'{': '}', '[': ']', '(': ')','?': '?'};
stack = ['?'];
for c in s:
if c in dic: stack.append(c);
elif dic[stack.pop()] != c: return False ;
return len(stack) == 1;
知识点:
1.栈stack
2.字典dic:
dic["键"] = "值"
dic的作用是建立一组 key 和一组 value 的映射关系,dic的key是不能重复的。