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;
}*/
case '{':{ //switch case語句,有幾點需要注意,因爲在集成環境中,自己對問題就直接發現了,但是在做筆試題目的時候,就沒有機會做出立馬的判斷,這對於一個程序員是好事還是壞事,這也是不好說的東西。
for(int i=1;i<l;i=i+2){
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("([)]");
}
}