leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

0241.cpp (818B)


0 class Solution { 1 int operate(char op, int a, int b) { 2 switch (op) { 3 case '+': return a + b; 4 case '-': return a - b; 5 case '*': return a * b; 6 } 7 return 0; 8 } 9 10 vector<int> rec(const string &expression, int start, int end) { 11 vector<int> res; 12 for (int i = start; i < end; i++) { 13 if (isdigit(expression[i])) continue; 14 for (auto n1 : rec(expression, start, i)) 15 for (auto n2 : rec(expression, i + 1, end)) 16 res.push_back(operate(expression[i], n1, n2)); 17 } 18 if (res.empty()) return {stoi(expression.substr(start, end - start))}; 19 return res; 20 } 21 22 public: 23 vector<int> diffWaysToCompute(const string &expression) { return rec(expression, 0, expression.size()); } 24 };