need improve 43. Multiply Strings

来源:互联网 发布:手机桌面软件管理 编辑:程序博客网 时间:2024/05/22 15:02
class Solution {public:    string add(string num1, string num2,int k,int c) {        string s1;        if(c!=0) s1.push_back('0'+c);        string s2(k,'0');        num2=s1+num2+s2;        if(num1.size()==0) return num2;        int c0=0;        for(int i=num2.size()-1,j=num1.size()-1;i>=0;i--,j--)        {            if(j>num1.size()-1)                 c0=num2[i]-'0'+c0;            else c0=num2[i]-'0'+c0+num1[j]-'0';            num2[i]=c0%10+'0';            c0=c0/10;        }        if(c0==0) return num2;        else return "1"+num2;    }    string multiply(string num1, string num2) {        int k1=0,k2=0;        for(int j=0;num1[j++]=='0';k1++) ;        for(int j=0;num2[j++]=='0';k2++) ;        if(k1==num1.size()||k2==num2.size()) return "0";        string s(k1+k2,'0');        string s1;        for(int j=num1.size()-1;j>=k1;j--)        {            if(num1[j]=='0') continue;            string temp(num2,k2);            int c=0;//jinwei            for(int i=temp.size()-1;i>=0;i--)            {                int tmp=(num1[j]-'0')*(temp[i]-'0')+c;                temp[i]='0'+tmp%10;                c=tmp/10;            }            s1=add(s1,temp,num1.size()-1-j,c);        }        return s+s1;    }};

看看这个
https://leetcode.com/discuss/71593/easiest-java-solution-with-graph-explanation

0 0
原创粉丝点击