题解 | #括号生成#
括号生成
https://www.nowcoder.com/practice/c9addb265cdf4cdd92c092c655d164ca
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串ArrayList */ ArrayList<String> result; public ArrayList<String> generateParenthesis (int n) { // write code here result = new ArrayList<String>(); StringBuilder sb = new StringBuilder(); solution(sb, n, n); return result; } public void solution(StringBuilder s, int left, int right) { if (left == 0 && right == 0) { result.add(s.toString()); return; } else { if (left == right) { s.append("("); left--; solution(s, left, right); s.deleteCharAt(s.length() - 1); left++; } else if (left < right) { if (left != 0) { s.append("("); left--; solution(s, left, right); s.deleteCharAt(s.length() - 1); left++; } if (right != 0) { s.append(")"); right--; solution(s, left, right); s.deleteCharAt(s.length() - 1); right++; } } } } }