1.题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = "()"
输出:true
解题思路:1.遍历字符串
2. 判断每个括号都是两个字符组成
3.字符串遍历完后,长度是否为0
代码如下:
class Solution:
def youxiaohao(self,str:str)->bool:
# 定义一个栈
zhan= []
# 遍历字符串
for bianli in str:
#如果当前遍历的等等于(
if bianli == "(":
# 在栈里面把右括号加进来
zhan.append(")")
elif bianli == "[":
#在栈里面把右方向中括号加进来
zhan.append("]")
#如果遍历左方向的大括号
elif bianli == "{":
#把右方向大括号加进来
zhan.append("}")
# 只要不满足这三个条件,它肯定是一个右方向的括号
elif not zhan or zhan[-1] != bianli:
#zhan[-1] != bianli 这就是匹配错误的
return False
else:
# 栈的元素弹出
zhan.pop()
# 此时,这个字符串已经遍历完了
return len(zhan) == 0
#自己测一下
s=Solution()
jieguo=s.youxiaohao(str="()")
print(jieguo)
结果如下:
True