力扣简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));
// }
}

 

 

改正如下:

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)=='{') {
                isValid=false;
                brackets[index]=s.charAt(i);
                index++;
            }
            else {
                if(s.charAt(i)==')') {
                    if(index>0&&brackets[index-1]=='(') {
                        index--;
                    }
                    else {
                        isValid=false;
                        break;
                    }
                }
                else if(s.charAt(i)=='}') {
                    if(index>0&&brackets[index-1]=='{') {
                        index--;    
                    }
                    else {
                        isValid=false;
                        break;
                    }
                }
                else if(s.charAt(i)==']') {
                    if(index>0&&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));
// }
}
 
 
精简如下:
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++) {
            isValid=false;
            if(s.charAt(i)=='('||s.charAt(i)=='['||s.charAt(i)=='{') {
                brackets[index]=s.charAt(i);
                index++;
            }
            else if(s.charAt(i)==')') {
                    if(index>0&&brackets[index-1]=='(') {
                        index--;
                    }
                    else {
                        break;
                    }
                }
            else if(s.charAt(i)=='}') {
                    if(index>0&&brackets[index-1]=='{') {
                        index--;    
                    }
                    else {
                        break;
                    }
                }
            else if(s.charAt(i)==']') {
                    if(index>0&&brackets[index-1]=='[') {
                        index--;
                    }
                    else {
                        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));
// }
}
posted @ 2021-09-25 23:30  Ssshiny  阅读(29)  评论(1)    收藏  举报