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;
}

results matching ""

    No results matching ""