题解 | #大数乘法#

大数乘法

https://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param s string字符串 第一个整数
# @param t string字符串 第二个整数
# @return string字符串
#
class Solution:
    def solve(self, num1: str, num2: str) -> str:
        # write code here
        # return int(s)*int(t)
        if num1 == "0" or num2 == "0":
            return "0"

            # 结果数组,最大长度为 len(num1) + len(num2)

        result = [0] * (len(num1) + len(num2))

        # 反向遍历两个数字字符串
        for i in range(len(num1) - 1, -1, -1):
            for j in range(len(num2) - 1, -1, -1):
                # 计算当前位的乘积
                mul = (ord(num1[i]) - ord("0")) * (ord(num2[j]) - ord("0"))
                # 计算当前位的索引
                p1 = i + j
                p2 = i + j + 1

                # 加上乘积到结果数组
                total = mul + result[p2]
                result[p2] = total % 10  # 当前位
                result[p1] += total // 10  # 进位

        # 将结果转换为字符串
        result_str = "".join(map(str, result))

        # 去掉前导零
        return result_str.lstrip("0")

全部评论

相关推荐

04-06 11:24
已编辑
太原学院 C++
点赞 评论 收藏
分享
Cherrycola01:0实习 0项目 约等于啥也没有啊 哥们儿这简历认真的吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务