题目地址:leetcode-cn.com/problems/va…
思路:这题利用栈先进后出的原理,把所有左括号放进栈,遇到右括号时就和栈顶的进行比较。如果不匹配就返回false。最后检查栈的大小。如果栈的大小不为0,那么也属于有左括号没有匹配上,返回false。
上代码:
class Solution {
public boolean isValid(String s) {
if (s.length()%2 == 1) {
return false;
}
Map<Character, Character> map = new HashMap<>();
map.put('(',')');
map.put('[',']');
map.put('{','}');
Stack<Character> stack = new Stack<>();
for (int i=0;i<s.length();i++) {
char c = s.charAt(i);
if (map.containsKey(c)) {
stack.push(c);
continue;
}
if (map.containsValue(c)) {
if (stack.size() == 0) {
return false;
} else {
Character pop = stack.pop();
if (map.get(pop) != c) {
return false;
}
}
}
}
return stack.size() == 0;
}
}