Leetcode043 multiply-strings

字符串相乘

题目描述:

给定两个以字符串形式表示的非负整数 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)直接将输入转换为整数来处理

解题思路:

主要利用ASCII码和ord()函数来解决问题

  • 首先用ord()函数来表示数字0的ASCII码,然后通过取目标数字字符串的每一位,将其ASCII码减去0的ASCII码,就可以表示每一位的数字
  • 特别的注意一下不同位数,需要乘以该位数的10倍
  • 最后通过str()函数将数字转换回字符串

Python源码:

class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        n1 = self.convert(num1)
        n2 = self.convert(num2)
        return str(n1 * n2)
    def convert(self, num):
        n = len(num)
        i = 0
        val = 0
        ord_zero = ord('0')
        while i < n:
            val = val * 10 + (ord(num[i]) - ord_zero)
            i += 1

        return val
        

欢迎关注我的github:https://github.com/UESTCYangHR

猜你喜欢

转载自blog.csdn.net/dzkdyhr1208/article/details/89351361
今日推荐