LeetCode LCR 085 括号生成
题目
解答
class Solution {public List<String> generateParenthesis(int n) {List<String> results = new ArrayList<>();StringBuilder sb = new StringBuilder();generateParenthesis(n, n, sb, results);return results;}void generateParenthesis(int left, int right, StringBuilder sb,List<String> results) {if (left == 0 && right == 0) {results.add(sb.toString());return;}if (left > 0) {sb.append("(");generateParenthesis(left - 1, right, sb, results);sb.deleteCharAt(sb.length() - 1);}if (left < right && right > 0) {sb.append(")");generateParenthesis(left, right - 1, sb, results);sb.deleteCharAt(sb.length() - 1);}}
}
总结
回溯法。
注意左括号在前,右括号在后,即左括号的数量要小于右括号的数量。
