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 List<String> generateParenthesis(int n) {
List<String> result=new LinkedList<String>();
if(n<=0) return result;
String s=new String();
dfs(0,0,n,s,result);
return result;
}
public void dfs(int left,int right,int n,String s,List<String> result){
if(left==n && left==right){
result.add(s);
return;
}
if(left<n) dfs(left+1,right,n,s+"(",result);
if(right<left) {
dfs(left,right+1,n,s+")",result);
}
}
}
本文介绍了一个使用递归思想生成所有有效括号组合的算法。给定一个正整数 n,该算法能生成所有可能的有效括号字符串组合。通过递归方式增加左括号和右括号,确保任何时候左括号的数量都不小于右括号的数量。
2069

被折叠的 条评论
为什么被折叠?



