zoukankan      html  css  js  c++  java
  • 24字符串相乘

    # 这道题不是很难,但是代码我写了很多行。
    # 首先就是按照乘法的算法,将每一位和另一个乘数相乘的结果放在一个列表中。
    # 然后将列表中的所有字符串相加
    class Solution:
    def multiply(self, num1: str, num2: str) -> str:
    return self.str_multiply(num1,num2)

    def str_multiply(self,num1,num2):
    # 保证num1是字符串长的那个
    if len(num1) < len(num2) :
    num1,num2 = num2,num1
    strs_list = []
    # 如果两个字符串有一个为零直接返回零
    if num1 == "0" or num2 == "0":return "0"
    for i in range(len(num2) - 1,-1,-1):
    jinwei_num = 0
    num_str = ""
    for j in range(len(num1) - 1,-1,-1):
    sum_num = 0
    sum_num = jinwei_num + int(num2[i]) * int(num1[j])
    jinwei_num = sum_num // 10
    sum_num = sum_num % 10
    num_str = str(sum_num) + num_str
    if jinwei_num != 0:
    num_str = str(jinwei_num) + num_str
    num_str += (len(num2) - i - 1) * "0"
    strs_list.append(num_str)
    zuizhong_str = "0"
    print(strs_list)
    for num_str in strs_list:
    zuizhong_str = self.addStrings(zuizhong_str,num_str)
    print(zuizhong_str)
    return zuizhong_str
    def addStrings(self, num1: str, num2: str) -> str:
    # 保证num1是字符串长的那个
    if len(num1) < len(num2) :
    num1,num2 = num2,num1
    # 定义变量用来表示当前数和进位数。
    sum_num,jinwei_num = 0,0
    # 定义一个字符串接收最后算出来的结果。
    num_str = ""
    index1,index2 = len(num1) - 1,len(num2) - 1
    # 首先两个字符串对应位数相加
    while index2 >= 0:
    # 两个字符串,加上进位数字
    sum_num = int(num1[index1]) + int(num2[index2]) + jinwei_num
    # 求出进位数字
    jinwei_num = sum_num // 10
    # 求出当前为数字
    sum_num = sum_num % 10
    # 然后写入字符串中
    num_str = str(sum_num) + num_str
    # 将当前为数字重新定义为零
    sum_num = 0
    # 指针遍历
    index2 -= 1
    index1 -= 1
    # num2已经遍历完成,此时num1可能已经遍历完成,
    # 但也可能还有很多。需要继续遍历相加。
    # 这里的代码和上边的那个相同,自己看下
    while index1 >= 0:
    sum_num = 0
    sum_num = int(num1[index1]) + jinwei_num
    jinwei_num = sum_num // 10
    sum_num = sum_num % 10
    num_str = str(sum_num) + num_str
    index1 -= 1
    # 这里判断进位是否为零,不为零的话要加上进位数字。
    if jinwei_num != 0:
    num_str = str(jinwei_num) + num_str
    return num_str

    A = Solution()
    A.multiply("1","1")
  • 相关阅读:
    Java使用jxl修改现有Excel文件内容,并验证其是否对公式的结果产生影响
    Java使用MyBatis的ScriptRunner执行SQL脚本
    Linux下批量解压.Z格式文件
    Java中将一个反斜杠转换成两个反斜杠
    mysql线上操作常用命令
    MySQL主从不一致修复
    slave_exec_mode参数对主从复制的影响
    ssh访问跳过RSA key"yes/no"验证
    k8s更新Pod镜像
    Go 延迟函数 defer 详解
  • 原文地址:https://www.cnblogs.com/cong12586/p/13495100.html
Copyright © 2011-2022 走看看