美文网首页
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