iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0

今日第一題:415. Add Strings

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() 直接對input進行轉換!!

思路:

  • chr() : 把ASCII中的數字轉為字元
  • ord() : 將字元轉為ASCII

不使用int() 獲得integers的方法:使用ord()將字元轉為ASCII,再將結果和ord('0')相減,即可得到int(字元)

使用上述方法獲得各個integer
因為字串會由最大位元數開始讀取,所以我們設定一個result,設定其初值為零,
下一次recursive時,會乘上十倍,即往前一位數

My solution

class Solution:
    def addStrings(self, num1: str, num2: str) -> str:
        result1 = 0
        result2 = 0
        for i in num1:
            result1 = 10*result1 + ord(i) - ord('0')
        for j in num2:
            result2 = 10*result2 + ord(j) - ord('0')
        return str(result1+result2)

Result

https://ithelp.ithome.com.tw/upload/images/20210926/20140843oxDmiutcwX.png

後來發現也可以使用function,這樣可以免於寫兩次一樣的東西

class Solution:
    def addStrings(self, num1: str, num2: str) -> str:
        def str2int(num):
            result = 0
            for i in num:
                result = 10*result + ord(i) - ord('0')
            return result
        return str(str2int(num1)+str2int(num2))

本來今天還想寫 706. Design HashMap,目前尚在理解self用法(很菜啦哈哈哈)


上一篇
Day10-119. Pascal's Triangle II
下一篇
Day12 - 409. Longest Palindrome
系列文
開學之前....20
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言