思路:
参考DISCUSS中的递归。
java code :
public class Solution {
public List<Integer> diffWaysToCompute(String input) {
List<Integer> ans = new ArrayList<Integer>();
for(int i = 0; i < input.length(); ++i) {
if('+' == input.charAt(i) || '-' == input.charAt(i) || '*' == input.charAt(i)) {
String frontPart = input.substring(0, i);
String lastPart = input.substring(i + 1);
List<Integer> ansFrontPart = diffWaysToCompute(frontPart);
List<Integer> ansLastPart = diffWaysToCompute(lastPart);
for(Integer m : ansFrontPart) {
for(Integer n : ansLastPart) {
int res = 0;
switch (input.charAt(i)) {
case '+':
res = m + n;
break;
case '-':
res = m - n;
break;
case '*':
res = m * n;
break;
default:
break;
}
ans.add(res);
}
}
}
}
if(ans.size() == 0) {
ans.add(Integer.parseInt(input));
}
return ans;
}
}
本文介绍了一种使用递归方法解析并计算包含加、减、乘运算的数学表达式的算法实现。通过Java代码示例展示了如何将一个字符串形式的数学表达式分解为多个子表达式,并递归地计算所有可能的计算结果。
2617

被折叠的 条评论
为什么被折叠?



