Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string.
Example 1:
Input: num1 = “2”, num2 = “3”
Output: “6”
Example 2:
Input: num1 = “123”, num2 = “456”
Output: “56088”
Note:
The length of both num1 and num2 is < 110.
Both num1 and num2 contain only digits 0-9.
Both num1 and num2 do not contain any leading zero, except the number 0 itself.
You must not use any built-in BigInteger library or convert the inputs to integer directly.
本题思路
依次遍历每一位数字
然后通过poslow 和 poshigh 来计算当前类和进位
从最后一位开始
用余数算出低位
用除数算出进位
每次结果都加上
class Solution {
public String multiply(String num1, String num2) {
int len1 = num1.length();
int len2 = num2.length();
if( len1 == 0 || len2 == 0)return "0";
int [] result = new int[len1+len2];//相乘结果所能达到的最高位
for(int i = len1 -1 ; i>= 0 ; i--){
for(int j = len2 -1; j>= 0;j--){
int mul = (num1.charAt(i) - '0')*(num2.charAt(j) - '0');
int poslow = i+j+1;
int poshigh = i +j;
mul += result[poslow];
result[poslow] = mul%10;
result[poshigh] += mul/10;
}
}
StringBuilder sb = new StringBuilder();
for(int res : result){
if(!(sb.length() == 0 && res == 0))sb.append(res);
}
return (sb.length() == 0)? "0":sb.toString();
}
}