目录

  • 题目描述:
  • 示例 1:
  • 示例 2:
  • 解法:

题目描述:

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

示例 1:

输入: num1 = "2", num2 = "3"
输出: "6"

示例 2:

输入: num1 = "123", num2 = "456"
输出: "56088"

说明:

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

解法:

class Solution {
public:string multi(string& s, char ch){if(ch == '0'){return "0";}else if(ch == '1'){return s;}string res = "";int sz = s.size();int carry = 0;for(int i = sz-1; i >= 0; i--){int val = carry + int(s[i] - '0')*int(ch - '0');carry = val / 10;val %= 10;res = char(val + '0') + res;}if(carry != 0){res = char(carry + '0') + res;}return res;}string add(const string& s, const string& t){string res = "";int sz1 = s.size();int sz2 = t.size();int i = sz1-1, j = sz2-1;int carry = 0;while(i >= 0 || j >= 0 || carry > 0){int d1 = (i >= 0) ? int(s[i] - '0') : 0;int d2 = (j >= 0) ? int(t[j] - '0') : 0;int d = d1 + d2 + carry;carry = d/10;d %= 10;res = char(d + '0') + res;i--;j--;}return res;}string multiply(string num1, string num2) {if(num1 == "0" || num2 == "0"){return "0";}else{int sz1 = num1.size();int sz2 = num2.size();string s = num1, t = num2;if(sz1 <= sz2){t = num1;s = num2;}string res = "";for(char ch : t){res += '0';res = add(res, multi(s, ch));}return res;}}
};

转载于:https://www.cnblogs.com/zhanzq/p/10697358.html

leetcode 43. 字符串相乘(Multiply Strings)相关推荐

  1. leetcode -43 -字符串相乘 -java版

    文章目录 题目 代码 题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = &quo ...

  2. LeetCode 43. 字符串相乘【c++/java详细题解】

    目录 1.题目 2.思路 3.c++代码 4.java代码 1.题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. ...

  3. LeetCode 43字符串相乘44通配符匹配

    原创公众号:bigsai,回复进群加入力扣打卡群. 字符串相乘 题目描述: 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形 ...

  4. LeetCode 43. 字符串相乘(大数乘法)

    文章目录 1. 题目 2. 小学竖式乘法 2.1 普通版 2.2 优化版 1. 题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示 ...

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

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

  6. LeetCode #43字符串相乘

    1.背景知识 1.1 String,StringBuffer,StringConstructor String类是不可变类.StringBuffer和StringConstructor是可变类,字符串 ...

  7. 多写写 leetcode 43. 字符串相乘

    难度:中等 频次:55 题目: 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 注意:不能使用任何内置的 BigInt ...

  8. leetcode 43.字符串相乘

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

  9. 【Day24】 LeetCode算法题 (注释详细+解题思路)[43. 字符串相乘 ] [1800. 最大升序子数组和]

    刷题打卡,第 二十四 天 题目一.43. 字符串相乘 题目二.1800. 最大升序子数组和 题目一.43. 字符串相乘 原题链接:43. 字符串相乘 题目描述: 给定两个以字符串形式表示的非负整数 n ...

最新文章

  1. 【Windows 逆向】OD 调试器工具 ( OD 附加进程 | OD 调试器面板简介 | 反汇编窗口 | 寄存器窗口 | 数据窗口 | 堆栈窗口 )
  2. 现代软件工程讲义 11 项目管理 - 事后诸葛亮会议
  3. 洛谷 - P6178 【模板】Matrix-Tree 定理(矩阵树定理模板题)
  4. 关闭sublime更新提示
  5. 2018 蓝桥杯省赛 B 组模拟赛(一)H.封印之门 最短路
  6. python实战——发邮件
  7. python——Web服务开发(一)Flask模块
  8. 一双木棋chess[九省联考2018]
  9. javascript之正则表达式
  10. 电脑办公技巧:他做了9小时的工作,我5秒就做完了
  11. 十、Python-模块
  12. 南邮物联网学院计算机考研,研友分享南京邮电大学物联网学院两个专业的一点看法...
  13. 最小二乘法曲线拟合的c++实现
  14. Iptable与firewalld防火墙
  15. Android8.1 MTK平台 SystemUI源码分析之 Notification流程
  16. 修改IE浏览器点击右键“查看源文件”时的打开程序
  17. JMeter(三):后置处理器[Regular Expression Extractor]
  18. matlab srgb,matlab – 将Photoshop sRGB复制到LAB转换
  19. 中国结构性心脏病年度报告2020发布会圆满召开!
  20. 永久开源的cms系统

热门文章

  1. Android新手系列教程(申明:来源于网络)
  2. linux: convmv =-======pkgs.org
  3. Java troubleshooting guide
  4. Windows xp下配置Apache、PHP环境及Oracle10g客户端
  5. linux平台下 延迟工作队列实例
  6. 高动态范围图像-单图
  7. 更新词汇至Unigram词表进行识别
  8. LeetCode算法题-Minimum Depth of Binary Tree(Java实现)
  9. 23 duplicate symbols for architecture i386
  10. UVa11427 Expect the Expected