LeetCode-22 括号生成

简介: LeetCode-22 括号生成

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/generate-parentheses

题目描述

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

 

示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
输入:n = 1
输出:["()"]
提示:
1 <= n <= 8

解题思路

由于n取值范围很小,所以可以直接进行模拟,对于n来说,组成的字符串将有2n个位置,每个位置在'('数量小于n时,可以设置为'(',在'(' 数目大于')'时,可以设置为')',通过枚举所有可能得解。

代码展示

 

class Solution {
public:
    vector<string> mvstrRet;
    int mN;
    void dfs(int left, int right, string &str)
    {
        if(right == mN)
        {
            mvstrRet.push_back(str);
            return;
        }
        if(left < mN)
        {
            str.push_back('(');
            dfs(left + 1, right, str);
            str.pop_back();
        }
        if(left > right)
        {
            str.push_back(')');
            dfs(left, right + 1, str);
            str.pop_back();
        }         
        return;
    }
    vector<string> generateParenthesis(int n) {
        mN = n;
        string str;
        dfs(0, 0, str);
        return mvstrRet;
    }
};

运行结果

 

相关文章
|
3天前
|
存储 C语言 索引
环形链表、环形链表 II、有效的括号​​​​​​​【LeetCode刷题日志】
环形链表、环形链表 II、有效的括号​​​​​​​【LeetCode刷题日志】
|
3天前
leetcode-301:删除无效的括号
leetcode-301:删除无效的括号
22 0
|
3天前
|
Java C++ Python
leetcode-20:有效的括号
leetcode-20:有效的括号
34 0
|
3天前
|
测试技术
LeetCode | 20.有效的括号(C语言版)
LeetCode | 20.有效的括号(C语言版)
47 0
LeetCode | 20. 有效的括号
LeetCode | 20. 有效的括号
|
3天前
|
Go
golang力扣leetcode 301.删除无效的括号
golang力扣leetcode 301.删除无效的括号
35 0
|
3天前
leetcode代码记录(有效的括号
leetcode代码记录(有效的括号
12 1
|
3天前
|
算法 安全 Java
【数据结构与算法】6、栈(Stack)的实现、LeetCode:有效的括号
【数据结构与算法】6、栈(Stack)的实现、LeetCode:有效的括号
22 0
|
3天前
|
Java
|
3天前
LeetCode题 338比特位计数,20有效的括号,415字符串相加
LeetCode题 338比特位计数,20有效的括号,415字符串相加
38 0