思路
- 如果表达式要有效,每次遇到左边的括号,后面某处必定要有右边的括号
- 但是又不能简单地计算左右括号的个数,因为顺序会影响结果。
- 所以就有个想法,如果能把左边的括号顺序存下来,看到右边括号的时候,就可以跟左边括号的顺序做对比。
代码
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;
}
}
}
网友评论