LeetCode:Different Ways to Add Parentheses

Different Ways to Add Parentheses




Total Accepted: 22360  Total Submissions: 62962  Difficulty: Medium

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 *.


Example 1

Input: "2-1-1".

((2-1)-1) = 0
(2-(1-1)) = 2

Output: [0, 2]


Example 2

Input: "2*3-4*5"

(2*(3-(4*5))) = -34
((2*3)-(4*5)) = -14
((2*(3-4))*5) = -10
(2*((3-4)*5)) = -10
(((2*3)-4)*5) = 10

Output: [-34, -14, -10, -10, 10]

Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.

Subscribe to see which companies asked this question

Hide Tags
  Divide and Conquer
Hide Similar Problems
  (M) Unique Binary Search Trees II (H) Basic Calculator (H) Expression Add Operators







































java code:

public class Solution {
    public List<Integer> diffWaysToCompute(String input) {
        List<Integer> ret = new ArrayList<Integer>();
        
        for(int i=0;i<input.length();i++){
            int c = input.charAt(i);
            
            if(c=='+' || c=='-' || c=='*') {
                List<Integer> leftList = diffWaysToCompute(input.substring(0,i));
                List<Integer> rightList = diffWaysToCompute(input.substring(i+1));
                for(int left : leftList){
                    for(int right : rightList){
                        int t = 0;
                        switch(c){
                            case '+': t = left + right;
                                break;
                            case '-': t = left - right;
                                break;
                            case '*': t = left * right;
                                break;
                        }
                        ret.add(t);
                    }
                }
            }
        }
        if(ret.size()==0){
            ret.add(Integer.valueOf(input));
        }
        return ret;
    }
}


你可能感兴趣的:(TO,LeetCode,different,ad,Ways)