java 241.添加括号的不同方法(1st).java
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 241.添加括号的不同方法(1st).java相关的知识,希望对你有一定的参考价值。
public class Solution {
public List<Integer> diffWaysToCompute(String input) {
List<Integer> res = new ArrayList<Integer>();
for(int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if(c == '+' || c == '-' || c == '*') {
String left = input.substring(0, i);
String right = input.substring(i + 1);
List<Integer> leftValues = diffWaysToCompute(left);
List<Integer> rightValues = diffWaysToCompute(right);
for (int l : leftValues) {
for (int r : rightValues) {
if (c == '+') res.add(l + r);
else if (c == '-') res.add(l - r);
else if (c == '*') res.add(l * r);
}
}
}
}
if (res.size() == 0) res.add(Integer.valueOf(input));
return res;
}
}
public class Solution {
public List<Integer> diffWaysToCompute(String input) {
List<Integer> rst=new ArrayList<Integer>();
if(input==null || input.length()==0){
return rst;
}
HashMap<String,List<Integer>> map=new HashMap<String, List<Integer>>();
rst=diffWaysToCompute(input,map);
return rst;
}
public List<Integer> diffWaysToCompute(String input, HashMap<String,List<Integer>> map){
if(map.containsKey(input)){
return map.get(input);
}
List<Integer> list=new ArrayList<Integer>();
for(int i=0;i<input.length();i++){
if(input.charAt(i)=='+' || input.charAt(i)=='-' || input.charAt(i)=='*'){
List<Integer> leftList=diffWaysToCompute(input.substring(0,i), map);
List<Integer> rightList=diffWaysToCompute(input.substring(i+1), map);
for(int leftn : leftList){
for(int rightn : rightList){
if(input.charAt(i)=='+'){
list.add(leftn+rightn);
}else if(input.charAt(i)=='-'){
list.add(leftn-rightn);
}else if(input.charAt(i)=='*'){
list.add(leftn*rightn);
}
}
}
}
}
if(list.size()==0 && input.length()!=0){
list.add(Integer.parseInt(input));
}
map.put(input,list);
return list;
}
}
以上是关于java 241.添加括号的不同方法(1st).java的主要内容,如果未能解决你的问题,请参考以下文章
java 241.添加括号的不同方法(1st).java
java 241.添加括号的不同方法(1st).java
java 241.添加括号的不同方法(1st).java
java 241.添加括号的不同方法(1st).java
LeetCode 241 的时间和空间复杂度是多少。添加括号的不同方法?
添加括号的不同方法 241