【leetcode算法-简单】20. 有效的括号

【题目描述】

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

解答

  • 解法:利用栈的先入后出的特性,对括号进行匹配

   

def isValid(self, s: str) -> bool:
    if len(s)%2 == 1: return False  #如果字符串长度是奇数,返回False
    dic = {'(':')','[':']','{':'}'}
    stack = []
    for i in range(len(s)):
        if s[i] == '(' or s[i] == '[' or s[i] == '{':  #将所有左括号入栈
            stack.append(s[i])
        if len(stack) == 0:   #如果右括号没有匹配的左括号
            return False
        if s[i] == dic[stack[-1]]:  #如果有匹配的括号则出栈
            stack.pop()
    return len(stack) == 0

  执行用时:34ms

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

解答

  • 解法:利用栈的先入后出的特性,对括号进行匹配

   

def isValid(self, s: str) -> bool:
    if len(s)%2 == 1: return False  #如果字符串长度是奇数,返回False
    dic = {'(':')','[':']','{':'}'}
    stack = []
    for i in range(len(s)):
        if s[i] == '(' or s[i] == '[' or s[i] == '{':  #将所有左括号入栈
            stack.append(s[i])
        if len(stack) == 0:   #如果右括号没有匹配的左括号
            return False
        if s[i] == dic[stack[-1]]:  #如果有匹配的括号则出栈
            stack.pop()
    return len(stack) == 0

  执行用时:34ms

猜你喜欢

转载自www.cnblogs.com/xxx1206/p/11962113.html