Lever's Castle

20. 有效的括号

February 19, 2020

https://leetcode-cn.com/problems/valid-parentheses/

使用语言:Go

解:

    func isValid(s string) bool {
        bracketMap := map[string]string{
            "(": ")",
            "[": "]",
            "{": "}",
        }
        var stack []string
        for _, c := range s {
            cs := string(c)
            if cs == "(" || cs == "[" || cs == "{" {
                stack = append(stack, bracketMap[cs])
            } else {
                if len(stack) == 0 {
                    return false
                }
                popCS := stack[len(stack) - 1]
                if popCS != cs {
                    return false
                }
                stack = stack[:len(stack) - 1]
            }
        }
        return len(stack) == 0
    }

思路

这道题目考察的是对数据结构 —— 栈 的使用。对于括号的匹配,实际上就是一个后进先出的栈。先进去的左括号,需要后匹配右括号,因此我直接用数组来构造了一个栈。栈中直接存放要匹配的右括号。遍历字符串 s,当遇到左括号时,入栈对应的右括号,当遇到右括号时,进行出栈操作,并检查出栈的符号是否与该右括号匹配,匹配则继续,不匹配直接返回 false


Lever

痕迹
没有过去,就没法认定现在的自己