解题思路:根据题意可知,括号必须是成对的,在括号里面的括号也必须是成对的,由此可知使用栈这种“先进后出”的特性可以很方便的解决此问题。遍历字符串,当字符为'('、'['、'{'时进行压栈操作,当字符为')'、']'、'}'时取出栈中的一个字符判断是不是成对的,如果不是直接返回false。最后还要检查一下栈里还有没有元素。
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch == '(' || ch == '{' || ch == '[') {
stack.push(ch);
} else {
if (stack.empty()) {
return false;
}
Character pop = stack.pop();
if (pop == '(') {
if (ch != ')') {
return false;
}
} else if (pop == '[') {
if (ch != ']') {
return false;
}
} else if (pop == '{') {
if (ch != '}') {
return false;
}
}
}
}
if (!stack.empty()) {
return false;
}
return true;
}
}