题目描述:
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:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
中文理解:
给定一个数字,代表括号的对数,然后返回能够组成的括号符合消去原则的,即就近消去,最后刚刚好全部消除。
解题思路:
使用递归,当括号组成的字符等于对数*2时返回,当括号正面数小于对数时,加入"("并递归,若括号正面数大于括号反面数,则加入")"并递归。
代码(java):
class Solution {
public List<String> generateParenthesis(int n) {
List<String> res=new ArrayList<String>();
int open=0,close=0,max=n;
generateParenthesisHelp(res,"",open,close,max);
return res;
}
public void generateParenthesisHelp(List<String> res,String element,int open,int close,int max){
if(element.length()==max*2){
res.add(element);
return;
}
if(open<max){
generateParenthesisHelp(res,element+"(",open+1,close,max);
}
if(open>close){
generateParenthesisHelp(res,element+")",open,close+1,max);
}
}
}