Re: [閒聊] 每日leetcode

看板Marginalman作者 (dont)時間1年前 (2024/08/07 08:55), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串655/1550 (看更多)
273. Integer to English Words ## 思路 列出所有可能的英文字 1~19, 十位數, 百/千/百萬/十億 Input: num = 1234567 Output: "One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven" 1,234,567 = 1 Million + 234 Thousand + 567 234 = 2 Hundred + 30 + 4 567 = 5 Hundred + 60 + 7 把數字照10**9, 10**6, 10**3, 100順序切割做recursion轉換成英文 ## Code ```python class Solution: def numberToWords(self, num: int) -> str: if num == 0: return 'Zero' to19 = (',One,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten,' 'Eleven,Twelve,Thirteen,Fourteen,Fifteen,Sixteen,' 'Seventeen,Eighteen,Nineteen').split(',') tens = (',Ten,Twenty,Thirty,Forty,Fifty,Sixty,Seventy,Eighty,Ninety').split(',') split_pairs = [ (1_000_000_000, 'Billion'), (1_000_000, 'Million'), (1_000, 'Thousand'), (100, 'Hundred'), ] def get_word(num): res = [] for val, word in split_pairs: if num >= val: chunk, num = divmod(num, val) res.append(get_word(chunk)) res.append(word) if num >= 20: chunk, num = divmod(num, 10) res.append(tens[chunk]) if num > 0: res.append(to19[num]) return ' '.join(res) return get_word(num) ``` -- http://i.imgur.com/OLvBn3b.jpg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 185.213.82.66 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1722992148.A.F55.html
文章代碼(AID): #1ciiOKzL (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1ciiOKzL (Marginalman)