原题:(频率3)
Given two non-negative integers num1
and num2
represented as strings, return the product of num1
and num2
.
Note:
- The length of both
num1
andnum2
is < 110. - Both
num1
andnum2
contains only digits0-9
. - Both
num1
andnum2
does not contain any leading zero. - You must not use any built-in BigInteger library or convert the inputs to integer directly.
题意:给两个字符串表示的数字,要求算出乘积
代码和思路:
class Solution {
public String multiply(String num1, String num2) {
int m = num1.length();
int n = num2.length();
int [] pos = new int [m+n];
//从后往前算乘积
for(int i = m-1; i >= 0; i--){
for(int j = n-1; j >= 0; j--){
int mul = (num1.charAt(i) - '0') * (num2.charAt(j) - '0');
int p1 = i + j;
int p2 = i + j + 1;
//把乘积放算出后,放在对应数组的对应位上,并算出此次计算相加后的结果
int sum = mul + pos[p2];
pos[p1] += sum / 10;
pos[p2] = sum % 10;
}
}
//进行条件判断,用StringBuilder把字符变为字符串
StringBuilder sb = new StringBuilder();
for(int p : pos) if(!(sb.length() == 0 && p == 0)) sb.append(p);
return sb.length() == 0 ? "0" : sb.toString();
}
}