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

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

发布时间:2021-01-20 11:56:38 所属栏目:大数据 来源:网络整理
导读: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 interna

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); ? ? } };

(编辑:徐州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读