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