这个题以前应该整理过,divide and conquer的方法很巧妙的fit in
public List diffWaysToCompute(String input) {
HashSet set = new HashSet();
set.add('+');
set.add('*');
set.add('-');
List res = helper(input, set);
Collections.sort(res);
return res;
}
public List helper(String input, HashSetset){
List res = new ArrayList();
for(int i=0; i left = diffWaysToCompute(input.substring(0,i));
List right = diffWaysToCompute(input.substring(i+1));
for(Integer l : left){
for(Integer r : right){
if(opt == '+'){
res.add(l+r);
}else if(opt == '-'){
res.add(l-r);
}else{
res.add(l*r);
}
}
}
}
}
if(res.isEmpty())
res.add(Integer.parseInt(input));
return res;
}