标签:
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.
class Solution { public: string multiply(string num1, string num2) { if(num1=="0"||num2=="0")return "0"; int len1=num1.size(); int len2=num2.size(); int *n1=new int[len1]; int *n2=new int[len2]; for (int i=0;i<len1;i++) { n1[i]=num1[i]-‘0‘; } for (int i=0;i<len2;i++) { n2[i]=num2[i]-‘0‘; } int *res=new int[len1+len2]; memset(res,0,(len1+len2)*sizeof(int)); for (int i=len1-1;i>=0;i--) { for (int j=len2-1;j>=0;j--) { res[i+j+1]+=n1[i]*n2[j]; } } string result=""; for (int k=len1+len2-1;k>=0;k--) { if(k>0) res[k-1]+=res[k]/10; res[k]%=10; result=char(res[k]+‘0‘)+result; } if(result[0]==‘0‘)return result.substr(1,result.size()); return result; } };
标签:
原文地址:http://www.cnblogs.com/Vae98Scilence/p/4283573.html