import java.util.Scanner;

import java.util.List;
import java.util.ArrayList;
import java.util.Stack;
import java.lang.StringBuffer;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        String input = new Scanner(System.in).nextLine();

        Stack<String> stack = new Stack<>();
        for(int i=0;i<input.length();i++){
            String subS = input.substring(i,i+1);
            if(subS.equals("[") ) stack.push(subS);
            else{
                //栈为空或栈顶为[
                if(stack.isEmpty()) stack.push(subS);
                else if(stack.peek().equals("[")) stack.pop();
                else stack.push(subS);
            }
        }

        StringBuffer sb = new StringBuffer(input);
        while(!stack.isEmpty()){
            String peek = stack.pop();
            if(peek.equals("[")) sb.append("]");
            else sb.insert(0,"[".toCharArray());
        }
        System.out.println(sb.toString());
    }
}

主要知识点:栈

思路:

1.先把能够匹配上的处理掉(删掉)

2.然后再把不能匹配上的逐个加括号(缺左括号就加左括号,缺右括号就加右括号)