LintCode : 生成括号



生成括号

给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。

您在真实的面试中是否遇到过这个题? 
Yes
样例

给定 n = 3, 可生成的组合如下:

"((()))", "(()())", "(())()", "()(())", "()()()"

标签   Expand  

相关题目   Expand  

Timer   Expand 

解题思路:
采用递归树的思想,当左括号数大于右括号数时可以加左或者右括号,否则只能加左括号,当左括号数达到n时,剩下全部

public class Solution {
    /**
     * @param n n pairs
     * @return All combinations of well-formed parentheses
     */
    public ArrayList generateParenthesis(int n) {
        // Write your code here
          ArrayList res = new ArrayList();
          String item = new String();
          getgenerateParentList(res, item, n, 0, 0);
          return res;
     }

     public void getgenerateParentList(ArrayList res, String item,
               int n, int lge ,int rge) {
               if(lge==n){
                    for(int i=0;irge){
                    getgenerateParentList(res, item+")", n, lge, rge+1);                   
               }
    }
}



你可能感兴趣的:(LintCode : 生成括号)