43. Multiply Strings

来源:互联网 发布:重大网络教育学院官网 编辑:程序博客网 时间:2024/06/15 02:32

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.
思路:采用相加的办法。但是不能暴力相加,那样肯定超时!
我采用的方法是千位的跟千位的相加,百位的跟百位的相加。。。
例如:
num1="1234" , num2="456"
那么123400相加4次,12340相加5次,1234相加6次 。。。。
AC解:
class Solution {public:    string addString(string num1,string num2)    {        int i = num1.length()-1;        int j = num2.length()-1;        int c = 0;        int digitA,digitB;        string s;        while(i>=0 || j>=0 || c>0)        {            digitA = i>=0?(num1[i]-'0'):0;            digitB = j>=0?(num2[j]-'0'):0;            int sum = digitA+digitB+c;            c = sum/10;            s.insert(s.begin(),sum%10+'0');            i--;            j--;        }        return s;    }    string multiply(string num1, string num2)    {        if(num1=="0" || num2=="0")            return "0";                string ret;        int num1_Size = num1.length();        int num2_Size = num2.length();        for(int i=0;i<num1_Size;i++)        {            string num2_copy(num2);            num2_copy.insert(num2_copy.end(),num1_Size-1-i,'0');            for(int j=0;j<(num1[i]-'0');j++)                ret=addString(ret,num2_copy);        }        return ret;    }};


0 0
原创粉丝点击