zoukankan      html  css  js  c++  java
  • 26.Generate Parentheses(生产有效括号的种类)

    Level:

      Medium

    题目描述:

    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:

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

    思路分析:

      用left和right代表左括号和右括号的剩余数,初始值为n,利用回溯的思想解题,当出现left的值大于right的值时,说明串中的右括号多于左括号,()),这种直接错误返回,如果出现left和right都为零则是满足情况的一个串。

    代码:

    public class Solution{
        public List<String>generateParenthesis(int n){
            List<String>res=new ArrayList<>();
            if(n<=0)
                return res;
            int left=n;
            int right=n;
            String str="";
            help(left,right,res,str);
            return res;
        }
        public void help(int left,int right,List<String>res,String str){
            if(left<0||right<0||right<left)
                return;
            if(left==0&&right==0){
                res.add(str);
                return;
            }
            help(left-1,right,res,str+"(");
            help(left,right-1,res,str+")");
        } 
    }
    
  • 相关阅读:
    改造二叉树
    汽车加油行驶问题
    [SHOI2012]回家的路
    子串
    P3558 [POI2013]BAJ-Bytecomputer
    HDU
    UVALive
    ZOJ
    HDU
    牛客小白月赛2 题解
  • 原文地址:https://www.cnblogs.com/yjxyy/p/10772941.html
Copyright © 2011-2022 走看看