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

LeetCode OJ : Different Ways to Add Parentheses(在不同位置增加括号的方法)

时间:2015-10-03 21:49:32      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:

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]

这里的主要思想是讲左右的子串分别算出来之后,再做全排列就行了,可能有很所重复计算所以说效率比较低

 1 class Solution {
 2 public:
 3     vector<int> diffWaysToCompute(string input) {
 4         vector<int> result;
 5         int length = input.length();
 6         for(int i = 0; i < length; ++i){
 7             char c = input[i];
 8             if(c == + || c == - || c == *){
 9                 string inputLeft = input.substr(0, i);
10                 string inputRight = input.substr(i+1);
11                 vector<int>leftResult = diffWaysToCompute(inputLeft);
12                 vector<int>rightResult = diffWaysToCompute(inputRight);
13                 for(int j = 0; j < leftResult.size(); ++j){
14                     for(int k = 0; k < rightResult.size(); ++k){
15                         if(c == +)
16                             result.push_back(leftResult[j] + rightResult[k]);
17                         else if(c == -)
18                             result.push_back(leftResult[j] - rightResult[k]);
19                         else if(c == *)
20                             result.push_back(leftResult[j] * rightResult[k]);
21                     }
22                 }
23             }       
24         }
25         if(result.empty())//这一步主要的作用是讲分治得到的最后的字符转换成数字
26             result.push_back(stoi(input));
27         return result;
28     }
29 };

 

LeetCode OJ : Different Ways to Add Parentheses(在不同位置增加括号的方法)

标签:

原文地址:http://www.cnblogs.com/-wang-cheng/p/4853883.html

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