有效的括号-python3

1、题目描述
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
    注意空字符串可被认为是有效字符串。
    来源:力扣(LeetCode)
    链接:valid-parentheses

2、解题思路
遍历整个字符串,遇到括号的开始符‘(’,‘[’,‘{’进入栈空间,当遇到结束符号‘)’,‘]’,‘}’是弹出栈顶的符号,如果匹配则继续遍历,否则括号不匹配。
初始代码如下:

def isValid(self, s: str) -> bool:
    L = []
    balanced = True
    matching = {
        '(': -1, ')': 1,
        '[': -2, ']': 2,
        '{': -3, '}': 3,
    }
    for i in s:
        if i in "([{":
            L.append(i)
        else:
            if len(L) != 0 and matching[L.pop()] + matching[i] == 0:
                continue
            else:
                balanced = False
                break
    return True if balanced and len(L) == 0 else False

执行时间和内存消耗:
有效的括号-python3_第1张图片

改进后的代码:

def isValid(s: str) -> bool:
    if len(s) % 2 == 1:
        return False
    L = []
    balanced = True
    matching = {
        '(': ')',
        '[':']',
        '{':'}'
    }
    for i in s:
        if i in "([{":
            L.append(i)
        else:
            if len(L) != 0 and matching[L.pop()] == i:
                continue
            else:
                balanced = False
                break
    return True if balanced and len(L) == 0 else False

执行时间和内存消耗:
有效的括号-python3_第2张图片

你可能感兴趣的:(leetcode)