目录
- 1. 题目:
- 2. 我的代码:
- 小结:
1. 题目:
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = “()”
输出:true
示例 2:
输入:s = “()[]{}”
输出:true
示例 3:
输入:s = “(]”
输出:false
2. 我的代码:
class Solution:
def isValid(self, s: str) -> bool:
# 对照字典
dic = {'.': '?', '(': ')', '[': ']', '{': '}'}
# 初始化栈
stack = ['.']
for c in s + '?':
if c in dic:
stack.append(c)
else:
c_last = stack.pop()
if dic[c_last] != c:
return False
if stack == []:
return True
else:
return False
dic用于进栈出栈的匹配,如果当前字符属于dic中的key,则可以进栈;如果不是,则判断栈顶元素对应的value是否能匹配当前字符,否则一定返回False。
当所有的字符都判断完后,剩余的为空,但是为了防止类似于’]'的报错情况,将栈底和栈顶加入自己设定的元素,来判断最后一刻是否空栈。这里使用的是 ‘.’: ‘?’ 两个元素
小结:
关注我给大家分享更多有趣的知识,以下是个人公众号,提供 ||代码兼职|| ||代码问题求解||
添加我的公众号即可: