Total Accepted: 10863 Total Submissions: 35390
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
"((()))", "(()())", "(())()", "()(())", "()()()"
public class Solution {
public ArrayList<String> generateParenthesis(int n) {
ArrayList<String> list = new ArrayList<String>();
dfs(list, "", 0, 0, n);
return list;
}
// invariant:(1) l >= r, (2) l <= n
public void dfs(ArrayList<String> list, String path, int l, int r, int n) {
if (l == n && r == n) {
list.add(path);
return;
} else if (r < n) {
// add (
if (l < n) dfs(list, path + "(", l + 1, r, n);
// add )
if (r < l) dfs(list, path + ")", l, r + 1, n);
}
}
}