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]

分析:

加了括号以后,每一个operator在某种情况下都会被最后执行。

    public List<Integer> diffWaysToCompute(String input) {
List<Integer> list = new ArrayList<Integer>();
for (int i = ; i < input.length(); i++) {
if (input.charAt(i) == '+' || input.charAt(i) == '-' || input.charAt(i) == '*') {
List<Integer> left = diffWaysToCompute(input.substring(, i));
List<Integer> right = diffWaysToCompute(input.substring(i + ));
for (int l : left) {
for (int r : right) {
if (input.charAt(i) == '+') {
list.add(l + r);
} else if (input.charAt(i) == '-') {
list.add(l - r);
} else if (input.charAt(i) == '*') {
list.add(l * r);
}
}
}
}
}
if (list.size() == ) {
list.add(Integer.parseInt(input));
}
return list;
}

最新文章

  1. setValue:forUndefinedKey this class is not key value coding-compliant for the key
  2. JavaScript + PHP 实现刷新继续保持倒计时的按钮
  3. Laravel框架数据库CURD操作、连贯操作使用方法
  4. [Virtualization][qemu][kvm][virtio] 使用 QEMU/KVM 模拟网卡多队列
  5. iOS - OC Enum 枚举
  6. 3DSlicer源代码编译过程vs2008+windows xp [转]
  7. Angular和jQuery的ajax请求的差别
  8. jdk1.6下载页面
  9. 转载 iOS拦截导航栏返回按钮事件的正确方式
  10. 上海2017QCon个人分享总结
  11. LINUX 笔记-ubuntu 配置 jdk 环境
  12. c#获取网络时间并同步本地时间
  13. vscode笔记(一)- vscode自动生成文件头部注释和函数注释
  14. python网络-多线程(22)
  15. 包的初识和进阶&amp;异常处理
  16. H5样式(个人使用)
  17. iOS架构模式浅析
  18. 解决webapi首次启动速度慢的问题 - z
  19. 题目1161:Repeater(规律输出图形)
  20. sublime text2 注册码

热门文章

  1. Saltstack pillar组件
  2. python- shutil 高级文件操作
  3. python 正则,常用正则表达式大全
  4. QT读写ini配置文件
  5. 做技术最自由,在IT最幸福!
  6. C# Thread挂起线程和恢复线程
  7. Java RMI 介绍和例子以及Spring对RMI支持的实际应用实例
  8. Apple Pay
  9. 浙大PAT-1002
  10. 优化PHP程序的方法(温故知新)