Different Ways to Add Parentheses
Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are +, - and *.
- Time: O(N) Space: O(1)
public List<Integer> diffWaysToCompute(String s) {
List<Integer> ret = new ArrayList<>();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '-' ||
s.charAt(i) == '+' ||
s.charAt(i) == '*') {
List<Integer> left = diffWaysToCompute(s.substring(0, i));
List<Integer> right = diffWaysToCompute(s.substring(i + 1));
for (Integer l : left) {
for (Integer r : right) {
if (s.charAt(i) == '-') {
ret.add(l - r);
} else if (s.charAt(i) == '+') {
ret.add(l + r);
} else {
ret.add(l * r);
}
}
}
}
}
if (ret.size() == 0) ret.add(Integer.parseInt(s));
return ret;
}