leetcode-241. Different Ways to Add Parentheses
2017-05-01 10:44
316 查看
考察点:递归,分治。
思路:这道题是典型的递归,分治题目。首先应该明确主函数是什么作用:它接受一个string,返回由这个string组成的所有种计算结果vector。因此,可以遍历一遍字符串,找出运算符将字符串分成两个字符串,然后分别用该函数递归。然后将结果存入ret数组里。在for循环外,如果ret是空的,说明该字符串就是一个完整的数字,直接返回它的整数化结果就行。这也是最终判断条件在函数最后而不是函数最初的一种题型。
C++代码:
思路:这道题是典型的递归,分治题目。首先应该明确主函数是什么作用:它接受一个string,返回由这个string组成的所有种计算结果vector。因此,可以遍历一遍字符串,找出运算符将字符串分成两个字符串,然后分别用该函数递归。然后将结果存入ret数组里。在for循环外,如果ret是空的,说明该字符串就是一个完整的数字,直接返回它的整数化结果就行。这也是最终判断条件在函数最后而不是函数最初的一种题型。
C++代码:
class Solution { public: vector<int> diffWaysToCompute(string input) { int len = input.size(); vector<int> ret; for (int i=0; i<len; i++) { if (input[i]=='+'||input[i]=='-'||input[i]=='*') { vector<int> leftPart = diffWaysToCompute(input.substr(0, i)); vector<int> rightPart = diffWaysToCompute(input.substr(i+1)); for (auto numleft : leftPart) { for (auto numright : rightPart) { switch (input[i]) { case '+' : ret.push_back(numleft + numright); break; case '-' : ret.push_back(numleft - numright); break; case '*' : ret.push_back(numleft * numright); break; } } } } } if (ret.empty()) { // has no '+' or '-' or '*'; ret.push_back(atoi(input.c_str())); } return ret; } };
相关文章推荐
- [leetcode] 241. Different Ways to Add Parentheses
- LeetCode *** 241. Different Ways to Add Parentheses
- Leetcode 241. Different Ways to Add Parentheses (Medium) (cpp)
- LeetCode[241. Different Ways to Add Parentheses] 难度[medium]
- leetcode -- 241. Different Ways to Add Parentheses 【分治法】
- leetcode_middle_34_241. Different Ways to Add Parentheses
- LeetCode 241. Different Ways to Add Parentheses(加括号的不同方法)
- [leetcode] 241. Different Ways to Add Parentheses
- 【leetcode题解】【再做一遍】【47】【M】241. Different Ways to Add Parentheses
- leetcode 241. Different Ways to Add Parentheses (Python版)
- <LeetCode OJ> 241. Different Ways to Add Parentheses
- [LeetCode]241. Different Ways to Add Parentheses
- LeetCode 241. Different Ways to Add Parentheses
- [LeetCode]241. Different Ways to Add Parentheses
- 【LeetCode】241. Different Ways to Add Parentheses
- LeetCode 241. Different Ways to Add Parentheses
- leetcode 241. Different Ways to Add Parentheses-分治算法
- [leetcode] 241. Different Ways to Add Parentheses
- 【LeetCode】 241. Different Ways to Add Parentheses
- 【LeetCode】241. Different Ways to Add Parentheses