1.题目

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

示例 1:

输入: num1 = “2”, num2 = “3”
输出: “6”
示例 2:

输入: num1 = “123”, num2 = “456”
输出: “56088”
说明:

num1 和 num2 的长度小于110。
num1 和 num2 只包含数字 0-9。
num1 和 num2 均不以零开头,除非是数字 0 本身。
不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。

2.代码展示

class Solution {public:string multiply(string num1, string num2) {string s;if(num2.empty())return num1;if (num1.empty())return num2;if (num1=="0"||num2=="0"){s+="0";return s;}int n1=num1.size()-1,n2=num2.size()-1;int carry=0,count=0,sum=0;vector<int> v(num1.size()+num2.size(),0);while (n2>=0){n1=num1.size()-1;count=num2.size()-1-n2;carry=0;while (n1>=0){sum = (v[count]+carry+(num1[n1]-'0')*(num2[n2]-'0'));v[count]=sum%10;carry=sum/10;++count;--n1;}if (carry>0){v[count++]=carry; }--n2;}for(int i=0; i<count;++i){s+=(v[i]+'0');}reverse(s.begin(),s.begin()+count);return s;}
};

3.解题思路

模拟我们乘法的过程,通过一个数组存储,然后最后转化成字符串,我为了方便存储的时候是逆序存储的。主要要考虑到进位的问题,以为乘法累加的问题。
最开始实在没思路,然后慢慢的想到加法的方法,修修改改,终于写出来了,虽然不难,但是有些麻烦。

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。相关推荐

  1. 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

    给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 不能直接将输入的字符串转换为整数形式. 思路:将字符串从最小位进行相加,最后形成的字符串倒置 class Solution {pu ...

  2. 2021-10-20:分数到小数。给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。输入: num

    2021-10-20:分数到小数.给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数.如果小数部分为循环小数,则将循环的部分括在括号内.输入: num ...

  3. 字符串相乘(给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。)

    43. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2& ...

  4. 随笔-给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和

    题目:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num1 和num2 ...

  5. C++ ,leetcode 43. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式

    一.思路: 字符串逆序,然后遍历两个逆序后的字符串,然后对应的字符相乘,i+j等于它的位数. string multiply(string num1, string num2) {reverseStr ...

  6. 给定两个字符串,确定其中一个字符串的字符重新排列后,能否变成另一个字符串...

    1 /* 2 * 给定两个字符串,确定其中一个字符串的字符重新排列后,能否变成另一个字符串,其实也就是变位词问题 3 * 比如说 a='abc' b='acb'是可以通过a变成b的 4 * 思路; 5 ...

  7. LeetCode||有效的字母异位词(排列)--给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词

    原题链接:https://leetcode-cn.com/problems/valid-anagram 题目描述: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示 ...

  8. 算法019:字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。

    题目:字符串轮转.给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串).示例1:输入:s1 = "waterb ...

  9. 给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。...

    给定两个字符串 s 和 t,它们只包含小写字母.字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母.请找出在 t 中被添加的字母. 示例: 输入: s = "abcd" ...

最新文章

  1. lodash 提取前N个元素 take
  2. SpringMVC基础及应用-李守红
  3. 分享一些 WINDOWS 资源站点(备用)
  4. l298n电机哪一端为正_一文详解电机倒顺开关接法!
  5. docker环境 快速使用elasticsearch-head插件
  6. 【手算】逆序数树形计算方法
  7. 推荐一款 ES 集群可视化工具:Cerebro,简单、实用!
  8. php refresh blank,php – Laravel Blank白页
  9. javaScript读取xml文件
  10. 如何用c语言编写炫酷烟花程序,简单屏幕烟花程序
  11. 部署Lync For 移动设备 一
  12. SQL 数据库 学习 016 如何附加数据库
  13. Elf精灵飞控系统V1.0-太空工程师
  14. matplotlib用Times New Roman且不加粗
  15. android espresso跨程序,Android中使用Espresso进行UI测试
  16. DNS的定义及工作原理
  17. 多雷达视频融合(1)——需求分析及解决方案
  18. Cocos Creator—定制H5游戏首页loading界面 1
  19. java谐音梗_你听过最好玩的英语谐音梗是?
  20. 贵大计算机学院张达敏,贵大计算机研究生怎么样?

热门文章

  1. 诗词创作[3] 问春
  2. 风控中消费信贷板块的英文词汇
  3. 五个受用一生的学习网站,高效免费,想提升自己能力的快来看看
  4. 黑马程序员—写给各位同学,并致黑马各位老师的一封感谢信~~~~绝对给力
  5. vba 输出文本 m Linux,利用VBA实现EXCEL数据输出TXT等文本文件
  6. 推荐书单——不定时更新
  7. mysql 主主1032_mysql 主从复制 1032
  8. mysql 1032错误_如何快速解决MySQL 1032 主从错误
  9. 格局打开,外贸牛人的价格谈判策略!
  10. 孩子数学成绩不好怎么办_孩子数学成绩差怎么才能快速提高