Multiply Strings

Given two numbers represented as strings, return multiplication of the numbers as a string.

Note: The numbers can be arbitrarily large and are non-negative.

这道题主要是考大数相乘

思路

将两个字符串转换成整型数组保存,用一个整型数组保存相乘的结果。这道题测试用例没有小数,不用考虑小数的问题。降低了难度

 1 public class Solution {
 2     public String multiply(String num1, String num2) {
 3         final int SIZE = 500;
 4         int array_num1[] = new int[num1.length()];
 5         int array_num2[] = new int[num2.length()];
 6         int array_result[] = new int[SIZE];    //保存大数相乘的结果
 7         
 8         strToNum(num1, array_num1);            //字符串转换成int[]
 9         strToNum(num2, array_num2);
10         
11         for(int i = 0; i < array_num1.length; i++){
12             for(int j = 0; j < array_num2.length; j++){
13                 array_result[i + j] += array_num1[i] * array_num2[j];
14             }
15         }                                    //从低位按位相乘,结果保存到array_result[]数组中
16         int length = array_result.length;
17         while(length > 0 && array_result[--length] == 0);
18         
19         //进位处理
20         for(int i = 0; i <= length; i++){
21             array_result[i + 1] += array_result[i] / 10;        //进位
22             array_result[i] = array_result[i] % 10;
23         }//for
24         length = SIZE;
25         while(length > 0 && array_result[--length] == 0);
26         String result = "";
27         for(int i = length; i >= 0; i--){
28             result += array_result[i];
29         }//for
30         
31         return result;
32     }
33     /**
34      * 字符串转换成整型数组
35      * @param str
36      * @param nums
37      */
38     private void strToNum(String str, int nums[]){
39         //nums[0]存放的是最低位
40         for(int i = str.length() - 1; i >= 0; i--){
41             nums[str.length() - i - 1] = str.charAt(i) - '0';
42         }
43     }
44 }

有关大数相乘,可以参考我的博客:

java版大数相乘

原文地址:https://www.cnblogs.com/luckygxf/p/4244405.html