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 }
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 }
22 public:
23 vector<int> diffWaysToCompute(const string &expression) { return rec(expression, 0, expression.size()); }
24 };