Generate Parentheses

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:

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

class Solution {
public:
    /*
     * 采用递归,open 代表左括号的个数, close 代表右括号的个数,给定n个左括号,和n个右括号
     * 结束条件就是左括号已经全部加入字符串,这时候,将剩下的右括号也加入字符串
     * 保证一个字符串中右括号的个数小于左括号的个数,同时左括号先出现
     *
     */
    vector<string> generateParenthesis(int n) {
        vector<string> res;
        string str = "";
        cmn(res, str, n, n);
        return res;
    }

    void cmn (vector<string>& res, string str, int open, int close) {
        //判断结束条件
         if (open == 0) {
             while (close) {
                 str += ‘)‘;
                 close--;
             }
             res.push_back(str);
             return;
         }
        //如果左括号存在,就将左括号加入字符串,这个判断不是必须的,可以去掉
        if (open) {
            cmn(res, str+‘(‘, open-1, close);
        }
        //如果剩下的右括号个数大于左括号的个数,就将右括号放入字符串
        if (close > open) {
            cmn(res, str+‘)‘, open, close-1);
        }
    }
};
时间: 2024-08-03 23:36:56

Generate Parentheses的相关文章

【leetcode】Generate Parentheses

题目: 给定整数n,返回n对匹配的小括号字符串数组. For example, given n = 3, a solution set is: "((()))", "(()())", "(())()", "()(())", "()()()" 分析: 这种问题的模式是:1)问题的解有多个 ,2)每个解都是由多个有效的 "步骤" 组成的,3)变更以有解的某个或某些"步骤"

Generate Parentheses java实现

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: "((()))", "(()())", "(())()", "()(())", "()()()" 本题的关键在于

[LeetCode][JavaScript]Generate Parentheses

Generate Parentheses 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: "((()))", "(()())", "(())()", "()(())", "

LeetCode: Generate Parentheses [021]

[题目] 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: "((()))", "(()())", "(())()", "()(())", "()()()" [题

leetCode 22.Generate Parentheses (生成括号) 解题思路和方法

Generate Parentheses 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: "((()))", "(()())", "(())()", "()(())", "

LeetCode: Generate Parentheses 解题报告

Generate ParenthesesGiven n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. For example, given n = 3, a solution set is: "((()))", "(()())", "(())()", "()(())", "

【LeetCode】Generate Parentheses (2 solutions)

Generate Parentheses 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: "((()))", "(()())", "(())()", "()(())", "

LeetCode 022 Generate Parentheses

题目描述:Generate Parentheses 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: "((()))", "(()())", "(())()", "()(())",

72. Generate Parentheses &amp;&amp; Valid Parentheses

Generate Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]"

Generate Parentheses leetcode java

题目: 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: "((()))", "(()())", "(())()", "()(())", "()()()" 题解: