题解思路:先根据字符串长度直接判断一下结果,若长度不能被2整除,直接返回false;若长度能被2整除就继续往下进行,创建一个字符型的栈,遍历字符串,如果遇到左括号就将其压入栈中,如果遇到右括号就将栈顶元素弹出,最后如果栈空,则返回true;反之返回false。
class Solution { public boolean isValid(String s) { if (s.length()%2 !=0) return false; Stack<Character> stack = new Stack<>();//创建一个字符型的栈 for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '(' || c == '[' || c == '{'){ stack.push(c); }else { if (stack.isEmpty()) return false; switch (c){ case ')' : if ( stack.pop() == '(' ) break; else return false; case ']' : if ( stack.pop() == '[') break; else return false; case '}' : if ( stack.pop() == '{' ) break; else return false; default: return false; } } } return stack.isEmpty(); } }