加入收藏 | 设为首页 | 会员中心 | 我要投稿 51站长网 (https://www.51zhanzhang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
站内搜索:
当前位置: 首页 > 大数据 > 正文

43. Multiply Strings(string模拟大数乘法)

发布时间:2021-01-20 14:15:09 所属栏目:大数据 来源:网络整理
导读: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 inter

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.

Subscribe?to see which companies asked this question



分析:

ac代码:

class Solution {

public:
? ? string multiply(string num1,string num2) {
? ? ? ? int n1=num1.length(),n2=num2.length(),L=n1+n2,i,j;
? ? ? ? vector<int>ires(L,0);
? ? ? ? string rets(L,'0');

//模拟手算从最后一位开始处理?
? ? ? ? for(i=n1-1;i>=0;i--)
? ? ? ? {
? ? ? ? ? ? for(j=n2-1;j>=0;j--)
? ? ? ? ? ? ? ? ires[i+j+1]+=(num1[i]-'0')*(num2[j]-'0');
? ? ? ? }

//进位?
? ? ? ? for(i=L-1;i>0;i--)
? ? ? ? {
? ? ? ? ? ? ires[i-1]+=ires[i]/10;
? ? ? ? ? ? ires[i]=ires[i]%10;
? ? ? ? }

//转换成字符串?
? ? ? ? for(i=L-1;i>=0;i--)
? ? ? ? {
? ? ? ? ? ? rets[i]=ires[i]+'0';
? ? ? ? }

//前导0 ? ? ? ? for(i=0;i<L;i++) ? ? ? ? { ? ? ? ? ? ? if(rets[i]!='0') ? ? ? ? ? ? ? ? break; ? ? ? ? } ? ? ? ? if(i==L) ? ? ? ? ? ? return "0"; ? ? ? ? return rets.substr(i,L-i); ? ? } };

(编辑:ASP站长)

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

    相关内容
    未处理完善
      无相关信息
    未处理完善