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.
"123456789", "987654321" | "121932631112635269" |
The idea is simple: calculate like doing it manually
public class Solution {
public String multiply(String num1, String num2) {
// Start typing your Java solution below
// DO NOT write main() function
int l1=num1.length();
int l2=num2.length();
if(l1==0||l2==0) return "";
int res[]=new int[l1+l2];
for(int j=l2-1;j>=0;j--)
for(int i=l1-1;i>=0;i--){
res[i+j+1]+=(num1.charAt(i)-'0')*(num2.charAt(j)-'0');
}
for(int i=l1+l2-1;i>=0;i--){
int tmp=res[i];
res[i]=tmp%10;
int k=i-1;
tmp/=10;
while(tmp!=0){
res[k]+=tmp%10;
k--;
tmp/=10;
}}
int i=0;
while(i<l1+l2&&res[i]==0) i++;
if(i==l1+l2) return "0";
StringBuilder s=new StringBuilder();
for(;i<l1+l2;i++) s.append(res[i]);
return new String(s);
}
}