如果一个字符串形式的公式,只包含+,-,*和数字。然后以数组形式返回加上括号后所有可能的结果。例如“2-1-1”则有可能输出2-1-1 = 0;2-(1-1)=2;所以返回[0,2]。
思路:
左右子串分别计算所有可能,然后全排列。
代码:
public classSolution {
public List<Integer>diffWaysToCompute(String input) {
List<Integer> result = newArrayList<Integer>();
for(int i = 0;i <input.length();i++){
if(input.charAt(i) == '+' ||input.charAt(i) == '-' || input.charAt(i) == '*'){
List<Integer> left =diffWaysToCompute(input.substring(0,i));
List<Integer> right =diffWaysToCompute(input.substring(i+1));
for(int j : left){
for(int k : right){
if(input.charAt(i) =='+'){
result.add(j + k);
}elseif(input.charAt(i) == '-'){
result.add(j - k);
}elseif(input.charAt(i) == '*'){
result.add(j * k);
}
}
}
}
}
if(result.isEmpty()){
result.add(Integer.valueOf(input));
}
return result;
}
}