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.
- Converting the input string to integer is?NOT?allowed.
- You should?NOT?use internal library such as?BigInteger.
Subscribe?to see which companies asked this question
分析:
ac代码:
class Solution {
public: ? ? string multiply(string num1,string num2) { ? ? ? ? int n1=num1.length(),n2=num2.length(),L=n1+n2,i,j; ? ? ? ? vector<int>ires(L,0); ? ? ? ? string rets(L,'0');
//模拟手算从最后一位开始处理? ? ? ? ? for(i=n1-1;i>=0;i--) ? ? ? ? { ? ? ? ? ? ? for(j=n2-1;j>=0;j--) ? ? ? ? ? ? ? ? ires[i+j+1]+=(num1[i]-'0')*(num2[j]-'0'); ? ? ? ? }
//进位? ? ? ? ? for(i=L-1;i>0;i--) ? ? ? ? { ? ? ? ? ? ? ires[i-1]+=ires[i]/10; ? ? ? ? ? ? ires[i]=ires[i]%10; ? ? ? ? }
//转换成字符串? ? ? ? ? for(i=L-1;i>=0;i--) ? ? ? ? { ? ? ? ? ? ? rets[i]=ires[i]+'0'; ? ? ? ? }
//前导0 ? ? ? ? for(i=0;i<L;i++) ? ? ? ? { ? ? ? ? ? ? if(rets[i]!='0') ? ? ? ? ? ? ? ? break; ? ? ? ? } ? ? ? ? if(i==L) ? ? ? ? ? ? return "0"; ? ? ? ? return rets.substr(i,L-i); ? ? } };
(编辑:PHP编程网 - 黄冈站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|