括号序列

题目描述

给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。

牛客网:NC52括号序列

#示例1

输入

"["

输出

false
示例2

输入

"[]"

输出

true

想法

本题我们可以使用栈来实现,括号的出现形式是成对嵌套形式的。遍历输入的字符串,如果遇到左括号,将对应的右括号直接入栈。遇到右括号时,就判断栈是否为空且出栈元素是否相同,如不符合要求,判断为false。完成遍历后,如果栈为空,判断为true,相反为false。

Java 栈的使用方法 https://www.imooc.com/article/17679

代码实现方法

public boolean isValid (String s) {
    if (s == null) return false;
    Stack<Character> characters = new Stack<Character>();
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        switch (c){
            case '(':
                characters.push(')');
                break;
            case '[':
                characters.push(']');
                break;
            case '{':
                characters.push('}');
                break;
            default:
                if (characters.empty()||characters.pop()!=c){
                        return false;
                }
        }
    }
    return characters.empty();
}
posted @ 2021-05-03 23:35  ilyar1015  阅读(56)  评论(0编辑  收藏  举报