Leetcode 題目 20. Valid Parentheses(個人錯誤分析)

public class Solution {
    public boolean isValid(String s) {
        int l = s.length();
        if (l%2!=0){
            return false;
        }
        else {
            char[] chararray = new char[l];
            chararray = s.toCharArray();
           /* for(int i= 0;i<l;i=i+2){
                if(chararray[i]=='{'){
                    if(chararray[i+1]=='}'){
                        return true;
                    }
                    else return false;
                }
                if(chararray[i]=='['){
                    if(chararray[i+1]==']'){
                        return true;
                    }
                    else return false;
                }
                if(chararray[i]=='('){
                    if(chararray[i+1]==')'){
                        return true;
                    }
                    else return false;
                }
            }*/

            /*

            switch (表達式){
            case 值1 : 語句1 break;
            case 值2 : 語句2 break;
             ...
             default : 語句n break;
              }*/
      

            switch(chararray[0]){

               case '{':{                           //switch case語句,有幾點需要注意,因爲在集成環境中,自己對問題就直接發現了,但是在做筆試題目的時候,就沒有機會做出立馬的判斷,這對於一個程序員是好事還是壞事,這也是不好說的東西。


                for(int i=1;i<l;i=i+2){    

                    if('{'==chararray[i]){      //方法是由方法名+(),這在編譯的時候以一個()爲標誌
                        return true;
                    }
                    
                }
                return false;     //有了return語句,就不會到達break語句,這個時候就會拋出錯誤error: unreachable statement
                }
                break;
              case  '[':{
                for(int i=1;i<l;i=i+2){
                    if('['==chararray[i]){
                        return true;
                    }
                    
                }
                return false;
              }
                break;
                case '(':{
                for(int i=1;i<l;i=i+2){
                    if('('==chararray[i]){
                        return true;
                    }
                    
                }
                return false;
                }
                break;
               case '}':return false;
                break;
               case ']':return false;
                break;
               case ')':return false;
                break;
            }
        }
       return false;//剛開始沒有這句,現在想想,如果前面的情況都考慮了,這句就肯定不會執行,所以這句就是用來作爲編譯通過的語句,因爲沒有這一句,就會出現下面的報錯
    }//error: missing return statement
    //編譯器不知道你具體會在哪裏返回,這個要運行時才能確定,所以,你最外面沒有返回,編譯器就認爲你錯了,語法不通過
    //ifelse包括所有for裏面的情況嗎,如果沒有滿足任何一個if的條件不就沒有return了嗎
    

    public static void main(String[] args){
        Solution solution = new Solution();
        System.out.println(solution.isValid("()[]{}"));
        solution.isValid("()");
        solution.isValid("(]");
        solution.isValid("([)]");
    }
    
    
    
    
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章