LeetCode-22 Generate Parentheses(合法括号情况)
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> list = new ArrayList<String>();
generate("",n,n,list);
return list;
}
public static void generate(String str,int left,int right,List<String> list){
if (left > 0) {
generate(str+'(',left-1,right,list);
}
if (left < right) {
generate(str+')',left,right-1,list);
}
if (left == 0 && right == 0 ) {
list.add(str);
}
}
}
Runtime: 242 ms
分析:貌似没什么好分析的。。根据情况递归处理,只要左括号没用完,就可以添加左括号。右括号的添加条件是 已经添加的左括号要比已经添加的右括号多,。其实不太需要解释。。看代码比较好理解吧。。最后括号添加完了就输出。。