Leetcode 中等:43. 字符串相乘

【LeetCode】第43题——字符串相乘(难度:中等) 【LeetCode】第43题——字符串相乘(难度:中等)题目描述解题思路代码详解注意点 题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 = “2”, num2 = “3” 输出: “6” 示例 2: 输入: num1 = “123”, num2 = “456” 输出: “56088” 说明: num1 和 num2 的长度小于110。 num1 和 num2 只包含数字 0- 阅读详情

题目:字符串相乘

  • 题号:43
  • 难度:中等
  • https://leetcode-cn.com/problems/multiply-strings/

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

注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。

示例 1:

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

示例 2:

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

示例 3:

输入: num1 = "498828660196", num2 = "840477629533"
输出: "419254329864656431168468"

提示:

  • 1 <= num1.length, num2.length <= 200
  • num1 和 num2 只能由数字组成。
  • num1 和 num2 都不包含任何前导零,除了数字0本身。

实现

C# 语言

public class Solution {
    public string Multiply(string num1, string num2) {
        if (num1 == "0" || num2 == "0")
            return "0";
        int len1 = num1.Length;
        int len2 = num2.Length;
        int len = len1 + len2;
        int[] temp = new int[len];

        for (int i = len2 - 1; i >= 0; i--)
        {
            int k = len2 - i;
            int b = num2[i] - '0';
            for (int j = len1 - 1; j >= 0; j--)
            {
                int a = num1[j] - '0';
                int c = a*b;

                temp[len - k] += c%10;
                if (temp[len - k] >= 10)
                {
                    temp[len - k] = temp[len - k]%10;
                    temp[len - k - 1]++;
                }

                temp[len - k - 1] += c/10;
                if (temp[len - k - 1] >= 10)
                {
                    temp[len - k - 1] = temp[len - k - 1]%10;
                    temp[len - k - 2]++;
                }
                k++;
            }
        }

        StringBuilder sb = new StringBuilder();
        int s = temp[0] == 0 ? 1 : 0;
        while (s < len)
        {
            sb.Append(temp[s]);
            s++;
        }
        return sb.ToString();        
    }
}

Python 语言

class Solution(object):
    def multiply(self, num1, num2):
        """
        :type num1: str
        :type num2: str
        :rtype: str
        """
        if num1 == '0' or num2 == '0':
            return '0'
        len1, len2 = len(num1), len(num2)
        len3 = len1 + len2
        temp = [0] * len3
        for i in range(len2 - 1, -1, -1):
            k = len2 - i
            b = ord(num2[i]) - ord('0')
            for j in range(len1 - 1, -1, -1):
                a = ord(num1[j]) - ord('0')
                c = a * b
                temp[len3 - k] += c % 10
                if temp[len3 - k] >= 10:
                    temp[len3 - k] %= 10
                    temp[len3 - k - 1] += 1

                temp[len3 - k - 1] += c // 10
                if temp[len3 - k - 1] >= 10:
                    temp[len3 - k - 1] %= 10
                    temp[len3 - k - 2] += 1
                k += 1
                
        s = temp[1:] if temp[0] == 0 else temp[:]
        s = map(str, s)
        return "".join(s)
43. Multiply Strings(字符串相乘)解法(C++ & 注释) 43. Multiply Strings(字符串相乘)1. 题目描述2. 乘法(Multiplication)2.1 解题思路2.2 实例代码 1. 题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 = “2”, num2 = “3” 输出: “6” 示例 2: 输入: num1 = “123”, num2 = “456” 输出: “56088” 说明: num1 和 num2 阅读详情

相关推荐

力扣刷题笔记 43. 字符串相乘 C#

今日签到题,签到题如下: 给定两个以字符串形式表示的非负整数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 本身。 ...

cjc52294的博客 549

力扣第五天

字符串相乘

m0_62555808的博客 218

【中等】力扣算法题解析LeetCode43:字符串相乘

本文介绍了如何在不使用内置大整数库的情况下,实现两个字符串形式的大整数乘法。算法通过模拟手工乘法过程,逐位相乘并处理进位,最终将结果转换为字符串。关键步骤包括初始化结果数组、双重循环逐位计算乘积、处理进位以及跳过前导零转换为字符串。该方法的时间复杂度为O(n²),空间复杂度为O(n),适用于大整数运算场景。

ylumwd的博客 327

力扣-43题 字符串相乘(C++)- 大数相乘

【代码】力扣-43题 字符串相乘(C++)- 大数相乘。

qq_40467670的博客 556

FreeRTOS-Plus-CLI在STM32F429上的高效移植与调试技巧

本文详细介绍了如何将FreeRTOS-Plus-CLI高效移植到STM32F429平台,并分享关键的调试技巧。内容涵盖使用HAL库进行底层驱动适配(特别是DMA+IDLE中断方案)、工程集成、自定义命令开发以及常见问题解决方案,旨在帮助开发者快速为嵌入式系统添加强大的命令行调试接口,提升开发与维护效率。

weixin_29224309的博客 334

如何利用URDF文件表示并联结构(仅适用于支持SDF格式的仿真环境)

介绍了一种使用URDF文件在Gazebo中表示并联结构的方法,该方法使用了URDF的SDF拓展。在一个具有并联结构的双足机器人上应用并演示了此方法的有效性。

RobotFreak的博客 3847

Leetcode 43 字符串相乘 C++

思路:和两个数 错位相乘相加的想法一致,只不过结果用字符串来表示,这样的话可以计算超大数相乘,不用考虑int 和long等的范围。 class Solution { public: string multiply(string num1, string num2) { int n1=num1.size(),n2=num2.size(); int k=n1+n...

qq_43387999的博客 621

基于FPGA的DDS信号发生器

之前的博客讲到了DDS的基本原理,现在用Verilog代码实现DDS,能够产生四种波形,方波,三角波,正弦波,锯齿波,用按键来控制频率和选择波形。其中按键消抖模块来自小梅哥的FPGA自学笔记设计与验证这本书。 module DDS_Module( Clk, Rst_n, EN, Fword, Key1, Pword, DA_Clk, DA_Data ); input Clk...

qq_43534451的博客 9949

LeetCode——第四十三题(C++):字符串相乘

题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例1: 输入: num1 = “2”, num2 = “3” 输出: “6” 示例2: 输入: num1 = “123”, num2 = “456” 输出: “56088” 说明: 1、num1 和 num2 的长度小于110。 2、num1 和 num2 只包...

一七 377

Win10安全模式下修改C盘权限的完整指南(附解决开始菜单失灵方案)

本文提供了一份在Win10安全模式下修复因C盘权限误改导致开始菜单失灵的完整指南。文章深入剖析了权限体系,特别是TrustedInstaller角色的重要性,并详细讲解了通过安全模式进入系统、使用ICACLS命令或图形界面精准重置C盘关键目录权限的步骤,最终恢复系统核心功能。

weixin_29250403的博客 234

Git Worktree + Claude Code:多终端并发开发完全实战

深入讲解如何使用 Git Worktree 配合多终端 Claude Code 实现并发开发,通过实战案例展示如何在 Android 开发中提升 2-3 倍效率,彻底告别等待 AI 的问题。

Cheson的专栏 1202

LeetCode第43题:字符串相乘(中等)

LeetCode第43题:字符串相乘(中等) 题目:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 解法一:思路比较简单,就是拆成一位一位的逐一数乘,难点在于整型有范围,而字符串没有范围。那么在每一位乘之后,都需要手动加法。网上的解法是补充0,然后再进行手动加法。 class Solution { /**...

new_whiter的博客 203

MS建模mmt

一、流程:1.定义好每个原子力场类型:Edit Sets(分组) 2.加H(一般是仅与Al-O八面体中的Al相连的O原子)、给H分组 3.“make P1”、校核化学式(正确与否) 4.扩成超晶胞(Na-mmt:4*1*1,Ca-mmt:4*2*1,illite:2*1*1,由化学式而定) 5.置换阳离子: mmt:模型中每 32 个 Si 4+有 1 个被 Al 3+ 取...

weixin_30721899的博客 2174

Leetcode 43. 字符串相乘 中等

字符串相乘 中等

分享简单技术,记录点滴成长 429

幸狐RV1106开发板运行Yolo8示例

rknn_model_zoo 是瑞芯微官方提供的 RKNPU 支持的各种主流算法的部署示例,目前对 Luckfox Pico 所使用的 RV1103/RV1106 有限支持,最新的示例支持 mobilenet 模型部署和 yolo 模型部署,本章以部署 yolov8修改版本为例介绍 rknn_model_zoo 示例的使用。:可选项,用于指定 RKNN 模型的保存路径,默认保存在 ONNX 模型同一目录下,名称为 ‘yolov8.rknn’例如“rv1106”。

qq_42730522的博客 3223

【ZZULIOJ】郑州轻工业大学oj题解整合

写在前面 关于ZZULIOJ题解 学习编程,想要巩固无非就是刷题或者做项目,然后因为我大一开始是刷郑轻的题目,就想着自己整合一下自己写的题目。既是复习也是笔记吧。 题解(内有题目描述) 1000 整数a+b 1001 植树问题 1002 简单多项式求值 1003 两个整数的四则运算 1004 三位数的数位分离 1005 整数幂 1006 求等差数列的和 1007 鸡兔同笼 1008 美元和人民币 1009 求平均分 1010 求圆的周长和面积 1011 圆柱体表面积 1012 求绝对值 1013 求两点间

蒟蒻乱写的博客 29万+

Leetcode_43. 字符串相乘

本文介绍了LeetCode字符串相乘问题的两种解法:暴力解法和模拟乘法。暴力解法因数据量大会超出整型范围而被否定。重点讲解了模拟乘法解法,通过逐位相乘并处理进位,使用反向迭代器从个位开始计算,最后通过字符串相加实现竖式乘法。文中提供了完整的C++代码实现,包括字符串相加辅助函数和主乘法函数,解决了大数相乘问题。

心动的那一刻,记忆便盛开了花 1156

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java实现 LeetCode 43 字符串相乘

43. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 = “2”, num2 = “3” 输出: “6” 示例 2: 输入: num1 = “123”, num2 = “456” 输出: “56088” 说明: num1 和 num2 的长度小于110。 num1 和 nu...

南 墙 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LeetCode —— 43. 字符串相乘

如果你觉得这篇文章对你有帮助,请在文章结尾处留下你的👍和💖,支持一下博主。同时记得✨这篇文章,方便以后重新阅读。

微笑,来自内心坚不可摧的自信。 1702

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LeetCode 43. 字符串相乘

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

Edison's 小宇宙 1万+

leetcode:43. 字符串相乘(附加一些C++string其他小练习)

C++string类 刷题应用

小青菜的博客 1054

大整数相乘 leetcode 43. 字符串相乘

题目描述 有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。 输入描述: 空格分隔的两个字符串,代表输入的两个大整数 输出描述: 输入的乘积,用字符串表示 示例1 输入 72106547548473106236 982161082972751393 输出 70820244829634538040848656466105986748 思路 方法来源:...

Hunter的博客 812

leetcode415.字符串相加、leetcode43.字符串相乘

目录 题目一 leetcode415.字符串相加 1.题目描述 2.解题思路 3.代码实现 题目二 leetcode43.字符串相乘 1.题目描述 2.解题思路 3.代码实现 题目一 leetcode415.字符串相加 1.题目描述 给定两个字符串形式的非负整数num1 和num2,计算它们的和。 注意: num1 和num2的长度都小于 5100. num1 和...

没有感情的刷题机器 1025

LeetCode 43. 字符串相乘 | Python

使用竖式运算的思路,解决 LeetCode 《43. 字符串相乘》 问题

"大梦三千秋的博客 1142

LeetCode 力扣 43. 字符串相乘

题目描述(中等难度) 就是两个数相乘,输出结果,只不过数字很大很大,都是用 String 存储的。也就是传说中的大数相乘。 解法一 我们就模仿我们在纸上做乘法的过程写出一个算法。 个位乘个位,得出一个数,然后个位乘十位,全部乘完以后,就再用十位乘以各个位。然后百位乘以各个位,最后将每次得出的数相加。十位的结果要补 1 个 0 ,百位的结果要补两个 0 。相加的话我们可以直接用之前的大数相加。直...

wind_liang的博客 1157

leetcode43. 字符串相乘

给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。 示例:  输入:num1 = “12”,num2 = “34”  输出:“408” 说明: num1和num2的长度小于110。 num1和num2只包含数字0~9。 num1和num2均不以零开头,除非是数字0本身。 不能使用任何标准库的大整数类型(比如BigInteger)或直接将输入转换为整数来处理。 思路: 代码如下: ...

2021dragon的博客 2307
上一篇: Leetcode 中等:19. 删除链表的倒数第N个节点
下一篇: Leetcode 中等:50. Pow(x,n)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青少年编程小助手_Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值