美文网首页
括号生成

括号生成

作者: 二进制的二哈 | 来源:发表于2019-12-01 19:20 被阅读0次

    题目来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/generate-parentheses

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

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

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

    回朔算法:

    Java代码:

    class Solution {
        public List<String> generateParenthesis(int n) {
            List<String> ans = new ArrayList<String>();
            dfs(ans,"",0,0,n);
            return ans;
        }
    
        private void dfs(List<String> ans,String str,int left,int right,int n){
            if(str.length() == n*2){
                ans.add(str);
                return;
            }
            if(left < n){
                dfs(ans,str+"(",left+1,right,n);
            }
            if(right < left){
                dfs(ans,str+")",left,right+1,n);
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:括号生成

          本文链接:https://www.haomeiwen.com/subject/factgctx.html