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.然后再把不能匹配上的逐个加括号(缺左括号就加左括号,缺右括号就加右括号)