Java多项式乘法
Java Polynomial Multiplication
我正在尝试为多项式乘法编写一个简单的代码。我认为将输入作为字符串(例如“3x^2”)是合乎逻辑的。
问题是我不知道如何处理其中的“x”。我怎样才能把它们变成可以成倍增加的东西?逻辑应该是什么?我是 Java 的新手,我真的需要帮助。
例如:
String s = "x^2";
String s2 = "3x^5";
//(Multiply them)
result = 3x^7
这适用于乘以 Ax^n、x^n 或 Ax 格式的多项式。我会把你想要相乘的项放到一个列表中,然后将系数和幂解析到一个 HashMap 中,然后使用它们来得到你的最终结果
List<String> terms = new ArrayList<>(Arrays.asList("x^2", "3x^5", "5x"));
Map<Integer,Integer> map = new HashMap<>();
for ( String term : terms ) {
String coefficient = term.split("x")[0].matches("") ? "1" : term.split("x")[0];
String[] exponent = term.split("x");
String power = exponent.length > 1 ? exponent[1].split("\^")[1] : "1";
map.put(Integer.parseInt(coefficient), Integer.parseInt(power));
}
Integer finalCoefficient = 1;
Integer finalPower = 0;
for ( Integer coefficient : map.keySet() ) {
finalCoefficient *= coefficient;
finalPower += map.get(coefficient);
}
System.out.println(finalCoefficient + "x" + finalPower);
public static int[] multiply(String term1, String term2)
{
int[] t1 = parse(term1);
int[] t2 = parse(term2);
int[] ret = new int[2];
ret[0] = t1[0] * t2[0];
ret[1] = t1[1] + t2[1];
return ret;
}
public static int[] parse(String term)
{
int pos = term.indexOf("x^");
String coeffStr = term.substring(0, pos);
int coeff = Integer.parseInt(coeffStr);
String powerStr = term.substring(pos + 2);
int power = Integer.parseInt(powerStr);
int[] ret = new int[2];
ret[0] = coeff;
ret[1] = power;
return ret;
}
我正在尝试为多项式乘法编写一个简单的代码。我认为将输入作为字符串(例如“3x^2”)是合乎逻辑的。
问题是我不知道如何处理其中的“x”。我怎样才能把它们变成可以成倍增加的东西?逻辑应该是什么?我是 Java 的新手,我真的需要帮助。
例如:
String s = "x^2";
String s2 = "3x^5";
//(Multiply them)
result = 3x^7
这适用于乘以 Ax^n、x^n 或 Ax 格式的多项式。我会把你想要相乘的项放到一个列表中,然后将系数和幂解析到一个 HashMap 中,然后使用它们来得到你的最终结果
List<String> terms = new ArrayList<>(Arrays.asList("x^2", "3x^5", "5x"));
Map<Integer,Integer> map = new HashMap<>();
for ( String term : terms ) {
String coefficient = term.split("x")[0].matches("") ? "1" : term.split("x")[0];
String[] exponent = term.split("x");
String power = exponent.length > 1 ? exponent[1].split("\^")[1] : "1";
map.put(Integer.parseInt(coefficient), Integer.parseInt(power));
}
Integer finalCoefficient = 1;
Integer finalPower = 0;
for ( Integer coefficient : map.keySet() ) {
finalCoefficient *= coefficient;
finalPower += map.get(coefficient);
}
System.out.println(finalCoefficient + "x" + finalPower);
public static int[] multiply(String term1, String term2)
{
int[] t1 = parse(term1);
int[] t2 = parse(term2);
int[] ret = new int[2];
ret[0] = t1[0] * t2[0];
ret[1] = t1[1] + t2[1];
return ret;
}
public static int[] parse(String term)
{
int pos = term.indexOf("x^");
String coeffStr = term.substring(0, pos);
int coeff = Integer.parseInt(coeffStr);
String powerStr = term.substring(pos + 2);
int power = Integer.parseInt(powerStr);
int[] ret = new int[2];
ret[0] = coeff;
ret[1] = power;
return ret;
}