美文网首页
LeetCode #20 Valid Parentheses

LeetCode #20 Valid Parentheses

作者: 光煜Gray | 来源:发表于2018-10-03 09:10 被阅读0次

    思路

    1. 如果表达式要有效,每次遇到左边的括号,后面某处必定要有右边的括号
    2. 但是又不能简单地计算左右括号的个数,因为顺序会影响结果。
    3. 所以就有个想法,如果能把左边的括号顺序存下来,看到右边括号的时候,就可以跟左边括号的顺序做对比。

    代码

    class Solution {
        public boolean isValid(String s) {
            Deque<Character> leftParens = new LinkedList<Character>();
            for (int i = 0; i < s.length(); i++) {
                char c = s.charAt(i);
                if (c == '(' || c == '{' || c == '[') {
                    leftParens.push(c);
                    continue;
                } 
                if (leftParens.peek() == null) return false;
                if (c == ')' && leftParens.pop() != '(') {
                    return false;
                } else if (c == '}' && leftParens.pop() != '{') {
                    return false;
                } else if (c == ']' && leftParens.pop() != '[') {
                    return false;
                }
            }
            if (leftParens.size() == 0) {
                return true;
            } else {
                return false;
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:LeetCode #20 Valid Parentheses

          本文链接:https://www.haomeiwen.com/subject/ifrzoftx.html