求解代码
publicbooleanisValid(Strings){char[]str=s.toCharArray();Stack<Character>stackData=newStack<>();for(charc:str){if(c=='('){stackData.push(')');}elseif(c=='['){stackData.push(']');}elseif(c=='{'){stackData.push('}');}elseif(stackData.isEmpty()||c!=stackData.pop()){returnfalse;}}returnstackData.isEmpty();}小贴士
如果遇到了左括号,就把和这个左括号配对的右括号压入栈中,总共就3种括号:小括号、中括号和花括号;
如果遇到了右括号,分情况讨论:
如果此时栈为空,说明无法构成有效的括号;
如果此时栈不为空,并且出栈的元素不等于这个右括号;
这两种情况,都构不成有效的括号,返回false;
只有到最后栈为空了,才返回true。