力扣简20 有效的括号
自己还是暴力人 其实想到应该用栈 但是现在我感觉还没有用栈的能力 继续数组吧
最初的代码附下 为了想要单出口 少用多出口 把最开始的if判断index为0放在最外
但形如“}”的字符串 明明不匹配 但是break出for循环 用if判0 结果错误为true
所以改进到for循环的最后一步 但是有又出错啦 形如“{}[]()(”时把前几个匹配后
因为此时index为0 所以isvalid被设0 而最后的单个前括号被认为时正确的
所以在最开始的判{[(中把isvalid设为false 因为单个前括号必定是false
class Solution {
public boolean isValid(String s) {
boolean isValid=false;
char[] brackets=new char[s.length()];
int index=0;
for(int i=0;i<s.length();i++) {
if(s.charAt(i)=='('||s.charAt(i)=='['||s.charAt(i)=='{') {
brackets[index]=s.charAt(i);
index++;
}
else {
if(s.charAt(i)==')') {
if(brackets[index-1]=='(') {
index--;
}
else {
isValid=false;
break;
}
}
else if(s.charAt(i)=='}') {
if(brackets[index-1]=='{') {
index--;
}
else {
isValid=false;
break;
}
}
else if(s.charAt(i)==']') {
if(brackets[index-1]=='[') {
index--;
}
else {
isValid=false;
break;
}
}
}
}
if(index==0) {
isValid=true;
}
return isValid;
}
//
//public static void main(String[] args) {
//
// Solution solution=new Solution();
// String s="[[]]() }{()}";
// System.out.println(solution.isValid(s));
// }
}
改正如下:

浙公网安备 33010602011771号