英文题目:
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:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
中文题目:
给定n对括号,编写一个函数来生成格式正确的括号的所有组合。
例如,给定n = 3,解集是:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
解析:
采用递归方式解决,开括号‘(’数量:left,闭括号‘)’数量:right,
1.left==n&&right==n时加入list;
2.left>right&&left==n时添加“)”;
2.left==right&&left<n时添加“(”;
3.left>right&&left<n时,添加“(”或“)”;
提交结果:
class Solution {
public List<String> generateParenthesis(int n) {
return parenthesis(n,new ArrayList<>(),0,0,"");
}
public List<String> parenthesis(int n,List<String> list,int left,int right,String sb) {
if(left==n&&right==n){
list.add(sb);
return list;
}else if(left>right&&left==n){
return parenthesis(n,list,left,right+1,sb+")");
}else if(left==right&&left<n){
return parenthesis(n,list,left+1,right,sb+"(");
}else if(left>right&&left<n){
list=parenthesis(n,list,left,right+1,sb+")");
list=parenthesis(n,list,left+1,right,sb+"(");
}
return list;
}
}