Valid Parenthese

有效的括号

题目描述

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

有效条件:

  • 左括号必须用相同类型的右括号闭合

  • 左括号必须以正确的顺序闭合

示例:

输入:"()"
输出:true

输入:"()[]{}"
输出:true

输入:"(["
输出:false

输入:"([)]"
输出:false

解法

解法一:利用栈

  • 时间复杂度:O(n)

  • 空间复杂度:O(n)

func isValid(s string) bool {
    stack := []byte{}
    for i := 0; i < len(s); i++ {
        if s[i] == '(' {
            stack = append(stack, ')')
        } else if s[i] == '{' {
            stack = append(stack, '}')
        } else if s[i] == '[' {
            stack = append(stack, ']')
        } else {
            index := len(stack) - 1
            if index < 0 || stack[index] != s[i] {
                return false
            }
            stack = stack[:index]
        }
    }

    return len(stack) <= 0
}

Last updated

Was this helpful?