码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] Different Ways to Add Parentheses

时间:2015-07-28 00:24:47      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

Different Ways to Add Parentheses

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

Input: "2-1-1".

((2-1)-1) = 0
(2-(1-1)) = 2

Output: [0, 2]


Example 2

Input: "2*3-4*5"

(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

Output: [-34, -14, -10, -10, 10]

Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.

 

先想到是就是递归了,下面是AC代码。可能有更好的解法,想到了再回来补充。

 1 class Solution {
 2 public:
 3     int compute(int a, int b, char op) {
 4         switch (op) {
 5             case +: return a + b;
 6             case -: return a - b;
 7             case *: return a * b;
 8         }
 9         return 1;
10     }
11     vector<int> diffWaysToCompute(string input) {
12         int val = 0, idx = 0;
13         while (idx < input.length() && isdigit(input[idx])) {
14             val *= 10;
15             val += input[idx++] - 0;
16         }
17         if (idx == input.length()) return {val};
18         vector<int> res;
19         vector<int> left, right;
20         for (int i = 0; i < input.length(); ++i) {
21             if (!isdigit(input[i])) {
22                 left = diffWaysToCompute(input.substr(0, i));
23                 right = diffWaysToCompute(input.substr(i + 1, input.length() -1 - i));
24                 for (int j = 0; j < left.size(); ++j) {
25                     for (int k = 0; k < right.size(); ++k) {
26                         res.push_back(compute(left[j], right[k], input[i]));
27                     }
28                 }
29             }
30         }
31         return res;
32     }
33 };

 

[LeetCode] Different Ways to Add Parentheses

标签:

原文地址:http://www.cnblogs.com/easonliu/p/4681493.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!