classSolution { public List<Integer> diffWaysToCompute(String expression) { List<Integer> ans = newArrayList<>(); for (inti=0; i < expression.length(); i++) { if (expression.charAt(i) == '+' || expression.charAt(i) == '-' || expression.charAt(i) == '*') { List<Integer> leftExp = diffWaysToCompute(expression.substring(0, i)); List<Integer> rightExp = diffWaysToCompute(expression.substring(i + 1)); for (Integer leftEle : leftExp) { for (Integer rightEle : rightExp) { ans.add(compute(leftEle, rightEle, expression.charAt(i))); } } } } if (ans.size() == 0) { ans.add(Integer.parseInt(expression)); } return ans; }
privateintcompute(int i, int j, char operand) { intans=0; switch (operand) { case'+': ans = i + j; break; case'-': ans = i - j; break; case'*': ans = i * j; break; } return ans; } }