43. Multiply Strings

来源:互联网 发布:微波遥感数据 编辑:程序博客网 时间:2024/06/14 09:35

1、题目描述

给两个非负的数字的字符串表示,返回两数之积的字符串表达。


2、思路

两个字符串先先取反。用一个数组ans来表示乘积的每一位,低位在前。

两层遍历嵌套。ans[j+k] += (num1[j] - '0') * (num2[k] - '0');

再次更新ans每一位,要加上前一位的进位。

用String表示ans。


3、代码

string multiply(string num1, string num2) {        num1=rev(num1);        num2=rev(num2);        int l1=num1.size(),l2=num2.size();        int ans[250];        for(int i=0;i<250;i++)            ans[i]=0;        for(int j=0;j<l1;j++)            for(int k=0;k<l2;k++)                ans[j+k]+=(num1[j]-'0')*(num2[k]-'0');        for(int i=0;i<249;i++){            ans[i+1]+=ans[i]/10;            ans[i]%=10;        }        string s="";        int i=249;        for(;i>=0;i--){            if(ans[i]!=0)                break;        }        if(i==-1)            return "0";        for(;i>=0;i--){            s=s+char('0'+ans[i]);        }        return s;    }    string rev(string s){        string str;        int l=s.size();        for(int i=0;i<l;i++)            str=s[i]+str;        return str;    }


 

原创粉丝点击