classSolution{ /* * 字符串 * 队列 */ public List<String> generateParenthesis(int n){ // 要拼接的括号数 n = 2 * n; List<String> list = new ArrayList<>(); char[] bracket = {'(', ')'}; // 填充头部 list.add("");
for (int i = 0; i < n; i++) { int size = list.size(); for (int j = 0; j < size; j++) { String temp = list.remove(0); for (int k = 0; k < 2; k++) { // 计算当前括号组合是否合法 int num = 0; for (int l = 0; l < temp.length(); l++) { num = temp.charAt(l) == '('? num + 1: num - 1; } num = k == 0? num + 1: num - 1;
// 最后的拼接左右括号数要相等 if (i == n - 1) { if (num == 0) { list.add(temp + bracket[k]); } } elseif (num >= 0) { list.add(temp + bracket[k]); } } } }