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:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
采用DFS的方法,递归调用自身来寻求匹配的括号对。具体代码如下:
public class Solution {
public List<String> generateParenthesis(int n) {
List<String> result = new ArrayList<String>();
OneByOne("",result,n,n);
return result;
}
private void OneByOne(String substr,List<String> result,int left,int right){
if(left>right){
return;
}
if(left>0){
OneByOne(substr+"(",result,left-1,right);
}
if(right>0){
OneByOne(substr+")",result,left,right-1);
}
if(left==0 && right==0){
result.add(substr);
return;
}
}
}