Multiply Strings (Medium)

Description

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.

Analysis

模拟大数乘法= =。

My Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//C
char* multiply(char* num1, char* num2) {
int len1 = strlen(num1),len2 = strlen(num2),len;
char *ans = (char *)malloc(sizeof(char)*(len1+len2+2));
char t ;
for(int i = 0;i<len1/2;i++){
t = num1[i];
num1[i]=num1[len1-i-1];
num1[len1-i-1] = t;
}
for(int i = 0;i<len2/2;i++){
t = num2[i];
num2[i]=num2[len2-i-1];
num2[len2-i-1] = t;
}
for(int i = 0;i<len1+len2+1;i++){
ans[i] = 0;
}
for(int i = 0;i<len1;i++){
for(int j = 0;j<len2;j++){
ans[i+j]+=(num1[i]-'0')*(num2[j]-'0');
ans[i+j+1]+=ans[i+j]/10;
ans[i+j]%=10;
}
}
len = len1 + len2;
while(len-1>0&&!ans[len-1])
len--;
for(int i = 0;i<len/2;i++){
t = ans[i];
ans[i]=ans[len-i-1];
ans[len-i-1] = t;
}
for(int i = 0;i<len;i++){
ans[i]+='0';
}
ans[len]=0;
return ans;
}