leetcode:43. 字符串相乘(数学)s

题目:

在这里插入图片描述

思路:

1.竖式乘法
2.引入进位。
3.从0开始,最后再反转。

代码:

int main()
{
 string n1="123";
 string n2="456";
 //if(n1=="0") return n1;
 //if(n2=="0") return n2;
 string s(n1.size()+n2.size(),'0');
 for(int i=0;i<n1.size();i++)
 {
  int c=0;//表示进位 
  for(int j=0;j<n2.size();j++)
  {
   //先化为整数 
   int c1=n1[n1.size()-1-i]-'0';
   int c2=n2[n2.size()-1-j]-'0';
   int cc=c1*c2+c+s[i+j]-'0';
   c=cc/10;
   s[i+j]=cc%10+'0'; 
  }
  s[i+n2.size()]=c+'0';
  }
  reverse(s.begin(),s.end());
  while(s[0]=='0')
  {
   s=s.substr(1,s.length()-1);
  }
  cout<<s;
 } 
发布了196 篇原创文章 · 获赞 126 · 访问量 4669

猜你喜欢

转载自blog.csdn.net/weixin_42721412/article/details/104512493