public class Solution {
public List<Integer> diffWaysToCompute(String input) {
List<Integer> rst = new ArrayList<>();
for (int i = 0; i < input.length(); i++) {
char sign = input.charAt(i);
if (sign == '+' || sign == '-' || sign == '*') {
String first = input.substring(0, i);
String second = input.substring(i + 1);
List<Integer> firstList = diffWaysToCompute(first);
List<Integer> secondList = diffWaysToCompute(second);
for (Integer num1 : firstList) {
for (Integer num2 : secondList) {
int num = 0;
switch(sign) {
case '+': num = num1 + num2;
break;
case '-': num = num1 - num2;
break;
case '*': num = num1 * num2;
break;
}
rst.add(num);
}
}
}
}
if (rst.size() == 0) rst.add(Integer.valueOf(input));
return rst;
}
}