iT邦幫忙

0

leetcode with python:415. Add Strings

  • 分享至 

  • xImage
  •  

題目:

Given two non-negative integers, num1 and num2 represented as string, return the sum of num1 and num2 as a string.

You must solve the problem without using any built-in library for handling large integers (such as BigInteger). You must also not convert the inputs to integers directly.

給定兩以字串表示的數字,以字串型態回傳兩者相加的結果
不可直接將輸入轉int相加

這題有點像2.,運用的手法也類似
不過那題數字是以linked list表示,這題是以字串表示

class Solution:
    def addStrings(self, num1: str, num2: str) -> str:
        num1=num1[::-1]
        num2=num2[::-1]
        
        if len(num1)>len(num2):
            num2=num2+"0"*(len(num1)-len(num2))
        else:
            num1=num1+"0"*(len(num2)-len(num1))
            
        ans=""
        temp=0    
        for i in range(len(num1)):
            x=int(num1[i])+int(num2[i])+temp
            temp=x//10
            ans=str(x%10)+ans
            
        if temp:
            ans=str(temp)+ans
            
        return ans

先將字串反轉方便操作
若兩字串長度不同,以"0"補足兩者的長度差
舉例來解釋,10+999相當於010+999

開始對每位進行運算(x=int(num1[i])+int(num2[i])+temp)
temp(x//10)代表進位值,而x%10是留在該位數的值
每次的x%10都加到ans字串
相加完記得檢查是否有殘餘的temp,像999+999=1998兩三位數相加進位到四位數
結果回傳ans
最後執行時間為27ms(faster than 99.69%)

那我們下題見


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言