思路
主要是使用递归方法,对于一个字符串,记录一下其左右括号的数量,若数量正好,加入集合。主要是根据左右括号的数量来判断下次应该加入什么括号
代码
class Solution {private fun generate(left: Int, right: Int, n: Int, result: MutableSet<String>, arr: CharArray, c: Char) {arr[left + right - 1] = cif (right == n){result.add(String(arr))return}if (left > right) {if (left < n) {generate(left + 1, right, n, result, arr, '(')generate(left, right + 1, n, result, arr, ')')}else {generate(left, right + 1, n, result, arr, ')')}}else if (left == right) {generate(left + 1, right, n, result, arr, '(')}}fun generateParenthesis(n: Int): List<String> {val result = mutableSetOf<String>()val arr = CharArray(2 * n)generate(1, 0, n, result, arr,'(')return result.toList()}}
