classSolution{publicbooleanisValid(String s){while(s.contains("{}")|| s.contains("()")|| s.contains("[]")){
s = s.replace("{}","");
s = s.replace("[]","");
s = s.replace("()","");}return s.isEmpty();}}
思路2(使用栈):
将字符串进行单个字符读取,将 左括号 入栈
遇见 右括号时, 如果此时栈是空的,则括号无效, 如果栈不是空的,则将其与上一个左括号进行匹配
如果左右括号不匹配,则括号无效,如果匹配,则继续进行下一个字符扫描
当所有字符扫描完,如果栈为空,则 括号有效
代码实现
classSolution{publicbooleanisValid(String s){
Stack<Character> stack =newStack<>();int len = s.length();for(int i =0; i < len; i++){char c = s.charAt(i);if(c =='('|| c =='['|| c =='{'){
stack.push(c);}else{if(stack.isEmpty())returnfalse;char left = stack.pop();if((left =='('&& c !=')')||(left =='['&& c !=']')||(left =='{'&& c !='}'))returnfalse;}}return stack.isEmpty();}}