春招修仙系列 —— leetcode 22括号生成

题目:

给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。

示例 1:

例如,给出 n = 3,生成结果为:

 [
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

代码1:

class Solution {
    public List<String> generateParenthesis(int n) {
      List<String> list = new ArrayList<>();
      helper(list,"",0,0,n);
      return list;    
    }
    private void helper(List<String> list,String temp,int open,int close,int n){
      if(open == n && close == n){
        list.add(temp);
        return;
      }
      if(open < n){
        helper(list,temp+"(",open+1,close,n);
      }
      if(close < open){
        helper(list,temp+")",open,close+1,n);
      }
    }
}

结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Kirito19970409/article/details/86558385
今日推荐