011_有效的括号

知识点:栈、括号匹配原理

LeetCode第二十题:https://leetcode-cn.com/problems/valid-parentheses/submissions/

语言:GoLang

/*
* 问题一:空串怎么处理?有效还是无效?
* 
*/
func isValid(s string) bool {
    length := len(s)
    
    if length % 2 == 1 {
        return false
    }

    stack := []rune{}
    for _, value := range s {
        if value == '(' || value == '[' || value == '{' {
            stack = append(stack, value)
        }else {
            if len(stack) > 0 && value == ')' && stack[len(stack) - 1] == '(' {
                stack = stack[:len(stack) - 1]
            }
            if len(stack) > 0 && value == ']' && stack[len(stack) - 1] == '[' {
                stack = stack[:len(stack) - 1]
            }
            if len(stack) > 0 && value == '}' && stack[len(stack) - 1] == '{' {
                stack = stack[:len(stack) - 1]
            }
        }
    }

    return len(stack) == 0
}
posted @ 2020-03-07 11:01  Cenyol  阅读(94)  评论(0)    收藏  举报