Valid Parentheses


Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

題意:括號匹配,要求同種括號一一對應,不能嵌套

思路:用棧存放左括號,若是遇到右括號則pop出比較,若是對不上則表示匹配失敗。最終所有比較完後若是棧中不爲空,則匹配失敗,不然表示匹配成功

實現:
public class Solution {
    public boolean isValid(String s ) {
        List< Character> left=new LinkedList<Character>();
        char[]arr =s .toCharArray();
        for(int i =0;i <s .length();i++){
           if(arr [i ]=='(' ||arr [i ]=='[' ||arr [i ]=='{' )//若是是左括號,則入棧
               left.add( arr[ i]);
           else{
               if(left .size()==0)//若是棧爲空,則匹配不成功
                    return false ;
               char t =left .get(left .size()-1);//取出棧頂元素
               left.remove( left.size()-1);
               switch(arr [i ]){
                    case ')' :
                         if(t !='(' )
                              return false ;
                         break;
                    case ']' :
                         if(t !='[' )
                              return false ;
                         break;
                    case '}' :
                         if(t !='{' )
                              return false ;
                         break;
              }
          }
        }
        if(left .size()!=0)//若是棧不爲空,表示左括號多了,匹配不成功
           return false ;
        return true ;
    }
}
相關文章
相關標籤/搜索