1. 程式人生 > 實用技巧 >LeetCode#20-有效的括號

LeetCode#20-有效的括號

import java.util.Stack;

/*
20. 有效的括號
給定一個只包括 '(',')','{','}','[',']' 的字串,判斷字串是否有效。

有效字串需滿足:

左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。

示例 1:

輸入: "()"
輸出: true
示例 2:

輸入: "()[]{}"
輸出: true
示例 3:

輸入: "(]"
輸出: false
示例 4:

輸入: "([)]"
輸出: false
示例 5:

輸入: "{[]}"
輸出: true
     思路:
          左括號壓入棧,
          右括號時候檢視棧頂
 */
public class p20 {
    public static boolean isValid(String s) {
        char []arr=s.toCharArray();
        if(s.length()%2==1)return false;
        System.out.println(00000000000000);
        Stack<Character> stack=new Stack<Character>();
        System.out.println(1111111111);
        for(int i=0;i<arr.length;i++){
            if(arr[i]=='('||arr[i]=='['||arr[i]=='{'){
                stack.push(arr[i]);
                System.out.println(stack.peek());
            }
            else{
                if(!stack.isEmpty()){
                    if(arr[i]==')'){
                        System.out.println(stack.peek());
                        char ch=stack.pop();

                        System.out.println(ch);
                        if(ch!='(')return false;
                    }
                    else if(arr[i]==']'){
                        char ch=stack.pop();
                        if(ch!='[')return false;
                    }
                    else if(arr[i]=='}'){
                        char ch=stack.pop();
                        if(ch!='{')return false;
                    }
                    else return false;
                }
                else return false;

            }

        }
        if(stack.isEmpty())return true;
        return false;

    }

    public static void main(String[] args) {
        System.out.println(isValid("("));
    }