LeetCode 22.括号生成

  • Post author:
  • Post category:其他


难度:中等。

标签:字符串,回溯算法。

与之前

LeetCode 17.电话号码的字母组合

那道题特别像。

正确解法:

class Solution {

    void get_result(vector<string>& result_list, string res, int n, int a, int b){
        if(a == n && b == n){
            result_list.push_back(res);
            return;
        }
        if(a < b || a < n){
            res.push_back('(');
            get_result(result_list, res, n, a+1, b);
            res.pop_back();
        }
        if(b < a){
            res.push_back(')');
            get_result(result_list, res, n, a, b+1);
            res.pop_back();
        }
    }
public:
    vector<string> generateParenthesis(int n) {
        vector<string> result;
        if(n == 0){
            result.push_back("");
            return result;
        }
        string temp;
        int a = 0, b = 0;
        get_result(result, temp, n, a, b);
        return result;
    }
};

在这里插入图片描述



版权声明:本文为almost_afei原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。