java整式计算,就是输入(x+y)^2,就输出x^2+2xy+y^2,输入3xyz*4xy就输出...
发布网友
发布时间:2024-10-01 18:30
我来回答
共3个回答
热心网友
时间:2024-10-17 17:46
1、所有的数的乘用*来分隔,加用+来分隔,以这些作最小单位作运算
2、对所有输入的乘转换成*,有次方的也分出来,减转成+,比如:(x-y)^2:(x+-y)*(x+-y)
3、写一个多数相乘的方法,把2用*split出来用这方法乘一遍
4、把3的结果以+分隔的数如x*-y*12*2*x*3,都用asscii排序并是数字的乘起来,并计算-的个数如果是双数就不要-是单就要-,如-72*x*x*y
5、把4的结果,不算数字把一样的块统计出来,比如x*x*y有-60个:-60*x*x*y
6、把相同的相乘统计出来用次方来表示如:-60*x^2*y
7、把所有的*去掉,+-换成-
如果想好一点的,还可以对以+分隔的做一下排序这样 x^2 就会在y^2之前了
以上只是一种思路,步骤不一定这样,可以有些在哪一步就一起做了
给个多数相乘的方法做参照:
private String multiply(String a, String b){
StringBuffer ret = new StringBuffer();
a = a.replace("-", "+-");
b = b.replace("-", "+-");
String[] a_ = a.split("\\+");
String[] b_ = b.split("\\+");
for(int i=0;i<a_.length;i++){
for(int j=0;j<b_.length;j++){
ret.append("+");
ret.append(a_[i]);
ret.append("*");
ret.append(b_[j]);
}
}
return ret.toString();
}
热心网友
时间:2024-10-17 17:43
其实这个题目的重点应该是判断你输入的是哪种公式,你可以为每种公式都写一个正则表达式,匹配到了谁就可以更具该公式进行展开了
热心网友
时间:2024-10-17 17:43
用正则即可解决。