2
Map<String, List<Integer>> memo = new HashMap<>();4
public List<Integer> diffWaysToCompute(String expression) {5
List<Integer> res = new LinkedList<>();6
if (memo.containsKey(expression)) return memo.get(expression);8
for (int i = 0; i < expression.length(); i++) {9
char c = expression.charAt(i);10
if (c == '*' || c == '+' || c == '-') {12
List<Integer> left = diffWaysToCompute(expression.substring(0, i));13
List<Integer> right = diffWaysToCompute(expression.substring(i + 1));20
} else if (c == '-') {22
} else if (c == '*') {29
// base case, when there is no operator31
res.add(Integer.parseInt(expression));33
memo.put(expression, res);