字符串相乘——int数组转字符串

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

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

示例 1:

复制代码
输入: num1 = "2", num2 = "3"
输出: "6"

示例 2:

复制代码
输入: num1 = "123", num2 = "456"
输出: "56088"

int数组转字符串

join只能用于 str类型的 数组

1. map

复制代码
"".join(map(str, arr))

2. 列表推导

复制代码
"".join([str(x) for x in arr])

思路

①其中一个数为0,这种情况必须单独处理。

②m*n 的最大位数 是 len(m+n),最小位数是(m+n-1),由9*9 ,1*1 可大致推断。

③multiplyResi+j+1 += n1* int(num2j) ,为什么是 i+j+1?

答:因为 m-1(个位)和 n-1(个位) 的乘积 放在数组的最后一个位置(m+n-1),正好是i+j+1

详细思路请看:https://www.bilibili.com/video/BV1ba4y1J7yh/?spm_id_from=333.1391.0.0&vd_source=eca9560dd11076f193a7713d6a13a4a3

算完之后再统一进位。

因为可能第一位是0,所以需单独处理一下,决定开始的idx是第一位还是第二位。

python 复制代码
class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        if num1 == '0' or num2 == '0':
            return '0'
        m,n=len(num1),len(num2)
        multiplyRes=[0]*(m+n)
        for i in range(m):
            n1=int(num1[i])
            for j in range(n):
                multiplyRes[i+j+1] += n1* int(num2[j])


        for i in range(m+n-1,0,-1):
            multiplyRes[i-1]+=multiplyRes[i]//10
            multiplyRes[i]=multiplyRes[i]%10

        idx=0
        if multiplyRes[0]==0:
            idx=1
        return "".join(map(str, multiplyRes[idx:]))
相关推荐
玖玥拾5 分钟前
LeetCode 1 两数之和
算法·leetcode·职场和发展
Cccp.1236 分钟前
【leetcode】(一)认识复杂度和简单排序算法
算法·排序算法
开源量化GO9 分钟前
学量化:看到“2026年 AI 写 Python”内容时,先用示例和练习补交易认知
人工智能·python
旖旎夜光15 分钟前
LeetCode 974:和可被 K 整除的子数组(前缀和) —— 题解
数据结构·c++·算法·leetcode·前缀和
萧瑟余晖18 分钟前
Java深入解析篇十三之Java日志API(JUL)详解
java·开发语言
无限码力19 分钟前
拼多多笔试真题 2026-8-30【唯一入栈出库序列】
算法·pdd笔试真题·拼多多春招笔试真题·拼多多秋招笔试真题·拼多多笔试真题题解·拼多多最新笔试题库
lvwangshu19 分钟前
分治:序列分治(CDQ)与点分治
算法·分治
无限码力24 分钟前
2026-8-30拼多多笔试真题-哪个查阅窗能留空(C++/Py/Java /Js/Go)
算法·pdd·pdd笔试真题·拼多多春招笔试真题·拼多多秋招笔试真题·拼多多笔试真题题解·拼多多笔试题解
SelectDB技术团队27 分钟前
StarRocks 适合做日志分析吗?
大数据·数据结构·后端·python·doris·日志分析·starrock
luj_176844 分钟前
毒素驱动的生物自毁机制探析
服务器·c语言·开发语言·经验分享·算法