题解 | #完成括号匹配#
完成括号匹配
https://www.nowcoder.com/practice/fe8d6a1b88af4ba6b4dbb10972059040
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 String input = in.nextLine(); String ouput = makeVlid(input); System.out.println(ouput); } private static String makeVlid(String s) { int leftCount = 0; //需要补充的左括号数量 int balance = 0; // 当前的平衡值 for (char c : s.toCharArray()) { if (c == '[') { balance ++; // 左括号增加平衡值 } else { balance--; // 右括号减少平衡值 } //如果平衡值边为负数,说明右括号过多,需要补充左括号 if (balance < 0) { leftCount++; balance = 0; } } //最红就是加上leftCount个【,后面加上balance个】 StringBuilder result = new StringBuilder(); //添加左括号 for (int i = 0 ; i < leftCount; i++) { result.append('['); } //原字符串 result.append(s); //右括号 for (int i = 0; i < balance; i++) { result.append(']'); } return result.toString(); } }