Different Ways to Add Parentheses

来源:互联网 发布:对号入座的网络词 编辑:程序博客网 时间:2024/05/01 21:08

c++

class Solution {public:    vector<int> diffWaysToCompute(string input) {        if (cache.find(input) != cache.end())            return cache[input];        vector<int> res;        for (int i = 0; i < input.size(); ++i) {            if (ispunct(input[i])) {                vector<int> left = diffWaysToCompute(input.substr(0, i));                vector<int> right = diffWaysToCompute(input.substr(i + 1));                for (auto &a : left) {                    for (auto &b : right) {                        if (input[i] == '+') res.push_back(a + b);                        if (input[i] == '-') res.push_back(a - b);                        if (input[i] == '*') res.push_back(a * b);                    }//b                }//a            }//if        }//i        vector<int> result = res.size() > 0 ? res : vector<int>{ stoi(input) };        cache[input] = result;        return result;    }private:    unordered_map<string, vector<int>> cache;};
0 0
原创粉丝点击