Desicription
Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are +, - and *.
Example 1:
1 2 3 4 5
Input: "2-1-1" Output: [0, 2] Explanation: ((2-1)-1) = 0 (2-(1-1)) = 2
Example 2:
1 2 3 4 5 6 7 8
Input: "2*3-4*5" Output: [-34, -14, -10, -10, 10] Explanation: (2*(3-(4*5))) = -34 ((2*3)-(4*5)) = -14 ((2*(3-4))*5) = -10 (2*((3-4)*5)) = -10 (((2*3)-4)*5) = 10
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
class {public : vector <int > diffWaysToCompute (const string &input) { vector <int > res; for (int i = 0 ; input[i]; i++) { if (input[i] == '+' || input[i] == '-' || input[i] == '*' ) { vector <int > nums_1 = diffWaysToCompute(input.substr(0 , static_cast <unsigned int >(i))); vector <int > nums_2 = diffWaysToCompute(input.substr(static_cast <unsigned int >(i + 1 ))); for (const auto & a : nums_1) { for (const auto & b : nums_2) { if (input[i] == '+' ) { res.push_back(a + b); } else if (input[i] == '-' ) { res.push_back(a - b); } else { res.push_back(a * b); } } } } } if (res.empty()) { res.push_back(atoi(input.c_str())); } return res; } };
近期评论