题解 | #括号生成#

括号生成

https://www.nowcoder.com/practice/c9addb265cdf4cdd92c092c655d164ca

#include <stack>
#include <string>
#include <vector>
#include <iostream>
using namespace std;

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @return string字符串vector
     */
    void dfs(vector<string>& v, string str, stack<char> str_l, stack<char> str_r, int n)
    {
        if (str_l.size() == n && str_r.size() == n)
        {
            v.emplace_back(str);
            return;
        }

        if (str_l.size() < n)
        {
            str_l.emplace(')');
            dfs(v, str + "(", str_l, str_r, n);
            str_l.pop();
        }
            

        if (str_r.size() < n && str_l.size() > str_r.size())
        {
            str_r.emplace(')');
            dfs(v, str + ")", str_l, str_r, n);
            str_r.pop();
        }
    }

    vector<string> generateParenthesis(int n) {
        // write code here
        vector<string> v;
        string str = "";
        stack<char> str_l;
        stack<char> str_r;

        dfs(v, str, str_l, str_r, n);

        return v;
    }
};

虚数五行区解题中心 文章被收录于专栏

非淡泊无以明志,非宁静无以致远

全部评论

相关推荐

Java转测开第一人:这种就是饼 把应届当廉价劳动力用完然后丢掉
你觉得今年秋招难吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务