题目要求:给定n对括号,写一个函数以生成良好形式的括号的所有组合。
输入:n = 3
输出:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
题解如下:
public static List<String> generateParenthesis(int n) {
List<List<String>> lists = new ArrayList<>();
lists.add(Collections.singletonList(""));
for (int i = 1; i <= n; ++i)
{
final List<String> list = new ArrayList<>();
for (int j = 0; j < i; ++j)
{
for (final String first : lists.get(j))
{
for (final String second : lists.get(i - 1 - j))
{
list.add("(" + first + ")" + second);
}
}
}
lists.add(list);
}