Re: [閒聊] 每日leetcode

看板Marginalman作者 (史萊哲林的優等生)時間1年前 (2024/08/07 14:23), 1年前編輯推噓3(301)
留言4則, 4人參與, 1年前最新討論串660/1548 (看更多)
※ 引述《enmeitiryous (enmeitiryous)》之銘言: : 273. Integer to English Words : 題目: : 給你一個2^32-1到0之間的一個整數,把他轉換成英文描述法,例如123->One Hundred : Twenty Three,以及101->One Hundred One,不是口語會說的One hundred and One 一半看答案跟思路解的 因為英文很機掰 所以要分成 <20 20~99 100~999 這些區間 Code: impl Solution { pub fn number_to_words(num: i32) -> String { if num == 0 { return "Zero".to_string(); } let below_20 = vec![ "", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight" , "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" ]; let tens = vec![ "", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" ]; let thousands = vec![ "", "Thousand", "Million", "Billion" ]; fn helper(num: i32, below_20: &Vec<&str>, tens: &Vec<&str>) -> String { if num == 0 { return "".to_string(); } else if num < 20 { return below_20[num as usize].to_string() + " "; } else if num < 100 { return tens[(num / 10) as usize].to_string() + " " + &helper( num % 10, below_20, tens); } else { return below_20[(num / 100) as usize].to_string() + " Hundred " + &helper(num % 100, below_20, tens); } } let mut num = num; let mut result = String::new(); let mut i = 0; while num > 0 { if num % 1000 != 0 { result = helper(num % 1000, &below_20, &tens) + thousands[i] + " " + &result; } num /= 1000; i += 1; } result.trim().to_string() } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.143.172 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1723011825.A.125.html ※ 編輯: yam276 (60.248.143.172 臺灣), 08/07/2024 14:24:20 ※ 編輯: yam276 (60.248.143.172 臺灣), 08/07/2024 14:24:39

08/07 14:33, 1年前 , 1F
大師
08/07 14:33, 1F

08/07 14:34, 1年前 , 2F
大師
08/07 14:34, 2F

08/07 14:43, 1年前 , 3F
大師
08/07 14:43, 3F

08/07 15:31, 1年前 , 4F
大師
08/07 15:31, 4F
文章代碼(AID): #1cinBn4b (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1cinBn4b (Marginalman)