LeetCode #20 Valid Parentheses

思路

  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;
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容