classSolution{publicbooleanisValid(String s){// 用栈的思维 遇到左括号入栈,遇到右括号进行出栈,如果匹配则继续,不匹配退出,说明不是有效括号字符串int sum =0;boolean result =true;
Stack<Character> bracketStack =newStack<>();for(int i =0; i < s.length(); i++){if(s.charAt(i)=='('|| s.charAt(i)=='['|| s.charAt(i)=='{'){
bracketStack.push(s.charAt(i));}else{if(bracketStack.isEmpty()){
result =false;break;}
sum =getBracketValue(s.charAt(i))+getBracketValue(bracketStack.pop());if(sum !=0){
result =false;break;}}}// 如果栈不为空,表示还有左括号被遗留没有被配对if(!bracketStack.isEmpty()){
result =false;}return result;}// 定义括号值privateintgetBracketValue(char ch){switch(ch){case'(':return-1;case')':return1;case'[':return-2;case']':return2;case'{':return-3;case'}':return3;default:return0;}}}