43. Multiply Strings

来源:互联网 发布:javascript计算器代码 编辑:程序博客网 时间:2024/05/16 18:36

Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2.

Note:

  1. The length of both num1 and num2 is < 110.
  2. Both num1 and num2 contains only digits 0-9.
  3. Both num1 and num2 does not contain any leading zero.
  4. You must not use any built-in BigInteger library or convert the inputs to integer directly.
  5. class Solution {public:    string add(string s1,string s2){if(s1.length()==0) return s2;if(s2.length()==0) return s1;reverse(s1.begin(),s1.end());reverse(s2.begin(),s2.end());string result;int i=0,count=0;int max_length=s1.length()>s2.length()?s1.length():s2.length();while(i<max_length){char a=i>=s1.length()?'0':s1[i];char b=i>=s2.length()?'0':s2[i];int sum=a-'0'+b-'0'+count;count=sum/10;char c=sum%10+48;result.push_back(c);i++;}if(count!=0)  result.push_back((char)(count+48));reverse(result.begin(),result.end());return result;}string time_add(string s,int time){string sum="";for (int i = 0; i < time; ++i){sum=add(sum,s);}return sum;}    string multiply(string s1, string s2) {        string sum="0";string time_string;string des_string;if(s1.length()>s2.length()) {time_string=s2;des_string=s1;}else{time_string=s1;des_string=s2;}int length=time_string.length();reverse(time_string.begin(),time_string.end());int i=0;string tmp_string=des_string,tmp_string2="";while(i<length){int a=time_string[i]-'0';if(i>0) tmp_string=time_add(tmp_string,10);tmp_string2=time_add(tmp_string,a);sum=add(tmp_string2,sum);i++;}return sum;    }};


原创粉丝点击