生成括号
给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。
您在真实的面试中是否遇到过这个题?
Yes
样例
标签
Expand
给定 n = 3
, 可生成的组合如下:
"((()))", "(()())", "(())()", "()(())", "()()()"
相关题目
Expand
Timer
Expand
解题思路:
采用递归树的思想,当左括号数大于右括号数时可以加左或者右括号,否则只能加左括号,当左括号数达到n时,剩下全部
public class Solution {
/**
* @param n n pairs
* @return All combinations of well-formed parentheses
*/
public ArrayList<String> generateParenthesis(int n) {
// Write your code here
ArrayList<String> res = new ArrayList<String>();
String item = new String();
getgenerateParentList(res, item, n, 0, 0);
return res;
}
public void getgenerateParentList(ArrayList<String> res, String item,
int n, int lge ,int rge) {
if(lge==n){
for(int i=0;i<n-rge;i++){
item += ")";
}
res.add(new String(item));
return;
}
getgenerateParentList(res, item+"(", n, lge+1, rge);
if(lge>rge){
getgenerateParentList(res, item+")", n, lge, rge+1);
}
}
}