Different Ways to Add Parentheses
程序员文章站
2022-05-18 10:04:32
...
题目描述
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 *.
思路分析
采用分而治之的思想,将这个看似复杂的问题简单化:从左到右顺序找出’+’,’-’和’*’,当找到一个运算符时就将字符串分成左、右两部分,分别调用diffWaysToCompute函数递归计算所有可能的值,最后利用for循环遍历左、右两部分vector的值进行交叉运算,并将结果放在容器result中;如果没有找到任何运算符,就将字符串转换成int型数字并放在result。
代码实现
class Solution {
public:
vector<int> diffWaysToCompute(string input) {
vector<int> result;
for (int s = 0; s < input.length(); s++) {
char ch = input.at(s);
if (ch == '+' || ch == '-' || ch == '*') {
vector<int> left = diffWaysToCompute(input.substr(0, s));
//substr默认从input的第i+1位到input的末尾
vector<int> right = diffWaysToCompute(input.substr(s+1));
for (int i = 0; i < left.size(); i++) {
for (int j = 0; j < right.size(); j++) {
if (ch == '+') {
result.push_back(left[i] + right[j]);
}
else if (ch == '-') {
result.push_back(left[i] - right[j]);
}
else if (ch == '*') {
result.push_back(left[i] * right[j]);
}
}
}
}
}
if (result.size() == 0) {
result.push_back(atoi(input.c_str()));
}
return result;
}
};
上一篇: Minimum Cost to Make at Least One Valid Path in a Grid
下一篇: Pytorch——tensorboard可视化模型计算图——add_graph() 和 torchsummary可视化模型信息
推荐阅读
-
算法分析与设计丨第一周丨LeetCode(2)——Different Ways to Add Parentheses(Medium)
-
Different Ways to Add Parentheses
-
Leetcode:241. Different Ways to Add Parentheses
-
241. Different Ways to Add Parentheses [Medium] 分治
-
Leetcode 241 Different Ways to Add Parentheses
-
[Leetcode] 241. Different Ways to Add Parentheses
-
Different Ways to Add Parentheses
-
LC.921. Minimum Add to Make Parentheses Valid
-
LeetCode 921. Minimum Add to Make Parentheses Valid
-
What Is - Different ways to make an HTTP or socket connection