leetcode 241题
思路
怎么考虑这个问题?我们可以假设所有的运算符为最后一次运算,对算式中所有的运算符做一次枚举,也就是对每个运算符都考虑这是最后一次运算。这样的话,左边递归地去做,右边也同样递归地去做。注意到运算符的两边都一定是数字,所以左右两边本质和整个算式是一样的,只是要短一些,所以可以递归地去做。左右的结果都算出来后,根据乘法原理,左边的所有可能乘上右边的所有可能,最后就可以枚举所有的可能了。下面上代码:
class Solution {
public:
vector<string> parsed;
vector<int> diffWaysToCompute(string expression) {
// 由于输入是一个字符串,我们先预处理出所有的数字和运算符,放到一个vector里面,
// 方便后面的暴搜。
for (int i = 0; i < expression.size(); ++i) {
if (isdigit(expression[i]))