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
| 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; }
|