241. Different Ways to Add Parentheses
2016-04-19 16:01
316 查看
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
Example 1
Input:
Output:
Example 2
Input:
Output:
思路:就是一个递归求和的问题,有点归并的感觉
代码如下(已通过leetcode)
public class Solution {
public List<Integer> diffWaysToCompute(String input) {
List<Integer> list=new ArrayList<Integer>();
if(input==null ||input.length()==0) return list;
if(!input.contains("+")&&!input.contains("-")&&!input.contains("*")) {
list.add(Integer.valueOf(input));
return list;
}
for(int i=0;i<input.length();i++) {
char ops=input.charAt(i);
if(ops=='+'||ops=='-'||ops=='*') {
List<Integer> left=diffWaysToCompute(input.substring(0,i));
List<Integer> right=diffWaysToCompute(input.substring(i+1,input.length()));
for(int leftvalue:left) {
for(int rightvalue:right) {
switch(ops) {
case '+': list.add(leftvalue+rightvalue);
break;
case '-': list.add(leftvalue-rightvalue);
break;
case '*': list.add(leftvalue*rightvalue);
break;
}
}
}
}
}
return list;
}
}
+,
-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]
思路:就是一个递归求和的问题,有点归并的感觉
代码如下(已通过leetcode)
public class Solution {
public List<Integer> diffWaysToCompute(String input) {
List<Integer> list=new ArrayList<Integer>();
if(input==null ||input.length()==0) return list;
if(!input.contains("+")&&!input.contains("-")&&!input.contains("*")) {
list.add(Integer.valueOf(input));
return list;
}
for(int i=0;i<input.length();i++) {
char ops=input.charAt(i);
if(ops=='+'||ops=='-'||ops=='*') {
List<Integer> left=diffWaysToCompute(input.substring(0,i));
List<Integer> right=diffWaysToCompute(input.substring(i+1,input.length()));
for(int leftvalue:left) {
for(int rightvalue:right) {
switch(ops) {
case '+': list.add(leftvalue+rightvalue);
break;
case '-': list.add(leftvalue-rightvalue);
break;
case '*': list.add(leftvalue*rightvalue);
break;
}
}
}
}
}
return list;
}
}
相关文章推荐
- ionic添加自定义xxx.js控制器文件不生效的问题
- js中的parseInt和Number的区别
- 怎么理解angularjs中的服务
- js 正则
- js对象大总结2016/4/19
- js 去除最后一个逗号
- jquery操作select取值,设置选中(转载)
- JavaScript中为什么null==0为false而null>=0为true
- 浅析JavaScript中浏览器的兼容问题
- js 毫秒转成yyyy-MM-dd格式
- javascript+HTML5 Canvas绘制转盘抽奖
- java javaScript实现遮罩层 动态加载
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(二)
- 解读node.js的cluster模块
- protocol buffer 安装与使用
- 详解js闭包
- HTML5 LocalStorage 本地存储
- BOM学习笔记
- 深入浅析JavaScript中的constructor
- XML 基础