import java.util.regex.Pattern;
class Solution {
//判断一个字符串是不是整数字符串
public static boolean isNumeric(String str){
Pattern pattern = Pattern.compile("[0-9]*");
return pattern.matcher(str).matches();
}
//分治法
public List<Integer> diffWaysToCompute(String expression) {
List<Integer> list = new ArrayList<Integer>();
int length = expression.length();
//System.out.println(expression);
if(isNumeric(expression))
{
int num = Integer.parseInt(expression);
list.add(num);
return list;
}
for(int i = 0;i < length; i++)
{
if(expression.charAt(i)=='+' || expression.charAt(i)=='-'||expression.charAt(i)=='*')
{
List<Integer> left = diffWaysToCompute(expression.substring(0,i));
List<Integer> right = diffWaysToCompute(expression.substring(i+1));
for(int j = 0;j < left.size();j++)
{
for(int k = 0; k < right.size();k++)
{
if(expression.charAt(i)=='+')
{
list.add(left.get(j) + right.get(k));
}
else if(expression.charAt(i)=='-')
{
list.add(left.get(j) - right.get(k));
}
else if(expression.charAt(i)=='*')
{
list.add(left.get(j) * right.get(k));
}
}
}
}
}
return list;
}
}
Leetcode-241 为运算表达式设计优先级
最新推荐文章于 2023-02-24 17:34:48 发布