思想:模拟乘法的计算方法。
public class BigNumberMulti {
public static void main(String args[]) {
System.out.println(bigMultiOption("45203435658798980982324","999034546766"));
}
public static String bigMultiOption(String first, String second) {
char[] firstNum = first.toCharArray();
char[] secondNum = second.toCharArray();
int firstLength = firstNum.length;
int secondLength = secondNum.length;
int totleLength = firstLength + secondLength ;
int[]tmpArray = new int[totleLength];
for (int firsIndex = 0 ; firsIndex < firstLength ; firsIndex++) {
int fistInt = firstNum[firsIndex] - '0';
for (int secdIndex = 0 ; secdIndex < secondLength; secdIndex ++) {
int secdInt = secondNum[secdIndex] - '0';
tmpArray[firsIndex + secdIndex] += fistInt * secdInt;
}
}
for(int index =totleLength -1 ; index >=0 ;index -- ){
if(index >= 1 && tmpArray[index] >9){
tmpArray[index -1] += tmpArray[index]/10 ;
tmpArray[index] = tmpArray[index]%10;
}
}
StringBuffer sb = new StringBuffer();
for(int index = 0 ; index < totleLength-1 ; index ++){
sb.append(tmpArray[index]);
}
return sb.toString();
}
}
另外,网上有人提出有分而治之的方法来实现,但还没有考虑清楚。希望下次修改时补充该方法