1096. 花括号展开 II

题目链接:1096. 花括号展开 II

方法:DFS由内向外展开

解题思路

ylb:[Python3/Java/C++/Go/TypeScript] 一题一解:递归(简洁代码)

代码

class Solution {
private:
    set<string> s;
    
    void dfsBrace(string exp) {
        int j = exp.find_first_of('}');
        if (j == string::npos) {
            s.insert(exp);
            return;
        }
        int i = exp.rfind('{', j);
        string a = exp.substr(0, i);
        string c = exp.substr(j + 1);
        int last, k;
        for (last = i + 1, k = i + 1; k < j; k ++ ) {
            if (exp[k] == ',') {
                dfsBrace(a + exp.substr(last, k - last) + c);
                last = k + 1;
            }
        }
        dfsBrace(a + exp.substr(last, k - last) + c);
    };
public:
    vector<string> braceExpansionII(string expression) {
        dfsBrace(expression);
        return vector<string>(s.begin(), s.end());
    }
};
posted @ 2023-04-08 18:36  lixycc  阅读(21)  评论(0)    收藏  举报