美文网首页
LeetCode每日一题:generate parenthese

LeetCode每日一题:generate parenthese

作者: yoshino | 来源:发表于2017-07-04 16:21 被阅读22次

    问题描述

    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分别表示左右括号的个数,直接递归即可。

    代码实现

    public ArrayList<String> generateParenthesis(int n) {
            ArrayList<String> result = new ArrayList<>();
            printParenthesis(n, 0, 0, "", result);
            return result;
        }
    
        private void printParenthesis(int n, int left, int right, String s, ArrayList<String> result) {
            if (right == n) result.add(s);
            if (left < n) printParenthesis(n, left + 1, right, s + "(", result);
            if (left > right) printParenthesis(n, left, right + 1, s + ")", result);
        }
    

    相关文章

      网友评论

          本文标题:LeetCode每日一题:generate parenthese

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