• LeetCode


    题目:

    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:

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

    思路:

    对于n个"("和n个")",在递归时保证"("的个数大于")"的个数

    package recursion;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class GenerateParentheses {
    
        public List<String> generateParenthesis(int n) {
            List<String> res = new ArrayList<String>();
            generate(res, n, n, "");
            return res;
        }
        
        private void generate(List<String> res, int left, int right, String s) {
            if (left == 0 && right == 0) {
                res.add(s);
                return;
            }
            
            if (left > 0) 
                generate(res, left - 1, right, s + "(");
            
            if (right > 0 && right > left) 
                generate(res, left, right - 1, s + ")");        
        }
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            GenerateParentheses g = new GenerateParentheses();
            for (String s : g.generateParenthesis(3)) {
                System.out.println(s);
            }
        }
    
    }
  • 相关阅读:
    第二十天笔记
    第十九天笔记
    第十七天笔记
    第十五天笔记
    第十六天笔记
    第十二天笔记
    数字三角形
    最大子段和与最大子矩阵和
    分组背包
    二维背包
  • 原文地址:https://www.cnblogs.com/null00/p/5060562.html
Copyright © 2020-2023  润新知