文字列かっこが一致するかどうかを判断する

2233 ワード

構想分析
  • スタックモードを使用して、先進的な後出原理!
  • 最初に入ってきた括弧が左括弧であるか否かを判断し、いいえ、直接エラー
  • 最後にスタックに値が存在するか否かを判断する、存在する、直接エラー
  • .
    コードの例:
     public  Boolean getPairString(String pair) {
    
        List pushPair = new ArrayList<>();
        pushPair.add("{");
        pushPair.add("(");
        pushPair.add("[");
    
        List popPair = new ArrayList<>();
        popPair.add("}");
        popPair.add("]");
        popPair.add(")");
    
        stack stack = new stack();
    
        char[] chars = pair.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            //       
            String aChar = String.valueOf(chars[i]);
            if(!pushPair.contains(aChar) && !popPair.contains(aChar)) {
                continue;
            }
            //              
            if(stack.list.size()==0&&popPair.contains(aChar)){
                return false;
            }
            //         ,  
            if (pushPair.contains(String.valueOf(chars[i]))) {
                stack.push(chars[i]);
            }
            //      ,  
            if (popPair.contains(String.valueOf(chars[i]))) {
                String pair1 = getPair(String.valueOf(stack.pop()));
                if (!aChar.equals(pair1)) {
                    return false;
                }
            }
        }
    
        if(stack.list.size()!=0){
            return false;
        }
        return true;
    }
    
    public static String getPair(String pair) {
    
        if ("{".equals(pair)) {
            return "}";
        }
        if ("}".equals(pair)) {
            return "{";
        }
        if ("[".equals(pair)) {
            return "]";
        }
        if ("]".equals(pair)) {
            return "[";
        }
        if ("(".equals(pair)) {
            return ")";
        }
        if (")".equals(pair)) {
            return "(";
        }
        return null;
    }
    
    
    
    
    class stack {
    
        List list = new ArrayList<>();
    
        public void push(Object o) {
            this.list.add(o);
        }
    
        public Object pop() {
    
            if (list.size() > 0) {
                int size = list.size();
                Object remove = this.list.remove(size - 1);
                return remove;
            }
            return null;
    
        }
    
    
    }