JAVA判斷字符串中的括號是否配對

public static void main(String[] args) {
        String str = "(][[[]fs{a}[]d][s[]][][d[]ds])";
        char[] c = str.toCharArray();
        Stack<Character> stack = new Stack<Character>();
        for(int i = 0;i < c.length;i++){
            if(c[i] == '(' || c[i] == '{' || c[i] == '['){
                stack.push(c[i]);
            } else{
                if(!stack.isEmpty()){
                    //獲取棧頂元素
                    char stackTop = stack.peek();
                    if(stackTop == '(' && c[i] == ')'){
                        stack.pop();
                        continue;
                    } else if(stackTop == '{' && c[i] == '}'){
                        stack.pop();
                        continue;
                    } else if(stackTop == '[' && c[i] == ']'){
                        stack.pop();
                        continue;
                    } else if(((c[i] == ')' && stackTop != '(') || (c[i] == '}' && stackTop != '{') || (c[i] == ']' && stackTop != '['))){
                        //若是當前元素是')}]'這些括號,且棧頂元素不能與之配對,則該字符串中的括號也是不配對
                        stack.push(c[i]);
                        break;
                    }
                } else if(c[i] == ')' || c[i] == '}' || c[i] == ']'){
                    //當棧中元素爲空時,當前元素爲這些括號時,則該字符串括號必定是不配對的
                    stack.push(c[i]);
                    break;
                }
            }
        }
        //循環完了只有若是棧中的元素爲空,則表示該字符串中的括號是配對的或者該字符串根本就沒有括號。
        if(stack.isEmpty()){
            System.out.println(true);
        } else{
            System.out.println(false);
        }
    }數組

第二種方法:字符串

一、首先遍歷該字符串,取出該字符串中的全部的括號存入到一個List或者數組中。List

二、遍歷該List或者數組,進行匹配,這樣就減小了其餘字符形成括號匹配的難度。循環

相關文章
相關標籤/搜索