zoukankan      html  css  js  c++  java
  • 边工作边刷题:70天一遍leetcode: day 33-3

    Multiply Strings

    要点:基本公式就是从低位开始(或者string的高index)两层loop:i,j乘积对应的位置是i+j+1(比如0,0,的位置是1,这里0的位置是进位。另外一定要有高位在0的sense)。
    错误点:

    • j是下位乘数的index,因为有进位,所以j要超出0,要更新j-=1
    class Solution(object):
        def multiply(self, num1, num2):
            """
            :type num1: str
            :type num2: str
            :rtype: str
            """
            n1 = len(num1)
            n2 = len(num2)
            res = [0]*(n1+n2)
            if num1=="0" or num2=="0": return "0"
            for i in range(n1-1, -1, -1):
                # 1. reset
                carry = 0
                for j in range(n2-1, -1, -1):
                    d1 = ord(num1[i])-ord('0')
                    d2 = ord(num2[j])-ord('0')
                    total = d2*d1+carry+res[i+j+1]
                    carry = total/10
                    res[i+j+1] = total%10
                
                j-=1
                if carry!=0:
                    total = res[i+j+1]+carry
                    res[i+j+1]=total%10
                
            if res[0]==0: del res[0]
            resStr = []
            for i in range(len(res)):
                resStr.append(str(res[i]))
            return ''.join(resStr)
                    
    
  • 相关阅读:
    java常用类
    java throw和catch同时使用
    HTML5 input 类型: email及url
    Android中集成支付宝
    HTML5 预加载
    SQLite数据库
    Android开发中如何加载API源码帮助开发
    Java中的static
    HTML5 Web Storage 特性
    gdal1.10编译经验
  • 原文地址:https://www.cnblogs.com/absolute/p/5678185.html
Copyright © 2011-2022 走看看