力扣(LeetCode) 每日一题: 20. 有效的括号

有效括号

20. 有效的括号

题目

给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

解体思路

判断括号的有效性可以使用「栈」这一数据结构来解决。

我们对给定的 括号字符串 进行遍历,当我们遇到左括号的时候,我们就会期待遇到与其对应相同类型的右括号

栈的先入后出,可以很好的解决这个问题。

首先我们创建将所有成对的括号编入到一个字典中

dic = {'{': '}',  '[': ']', '(': ')'}

然后创建一个栈stack,专门存储我们的左括号

stack = []

我们去遍历括号字符串s

当遇见左括号, 将括号放入stack中,

当遇见右括号,判断它是否和stack最后的括号匹配

如果不匹配,则不是有效的括号。

如果匹配则继续,直到遍历到最后。

def isValid(s):
    dic = {'{': '}',  '[': ']', '(': ')', '?': '?'}
    stack = ['?']   # 为了防止stack.pop() 报错,取巧
    for c in s:
        if c in dic: 
            stack.append(c)
       	else dic[stack.pop()] != c:
            return False
    return len(stack) == 1
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:C马雯娟 返回首页