Re: [閒聊] 每日leetcode

看板Marginalman作者 (史萊哲林的優等生)時間7月前 (2025/04/30 23:14), 7月前編輯推噓0(000)
留言0則, 0人參與, 最新討論串1411/1548 (看更多)
1295. Find Numbers with Even Number of Digits https://leetcode.com/problems/find-numbers-with-even-number-of-digits/ 很簡單的題目 判斷 Vec 中每個 num 的位數是否為偶數 並回傳這樣的 num 的總個數 思路: 最直觀思考是用 let mut digits = 0; while num > 0 { num /= 10; digits += 1; } 這樣雖然能解但寫完好醜 可以反向思考 直接把 num 轉成 String 判斷 len % 2 == 0 Code: impl Solution { pub fn find_numbers(nums: Vec<i32>) -> i32 { nums.into_iter() .filter(|&n| n.to_string().len() % 2 == 0) .count() as i32 } } 另外 因為之後不會再使用 nums 了 所以用 .into_iter() 蒐集 num 這是會取得所有權的 iterator 操作 各種 iter 操作與目的參考以下: 1. iter() for &n in nums.iter() { ... } 語意:我只是「借用」這個 vector,不會改它,也不會拿走資料。 2. iter_mut() for n in nums.iter_mut() { *n += 1; } 語意:我需要「修改」裡面的東西。 3. into_iter() for n in nums.into_iter() { ... } 語意:我根本就不想保留這個 vector,我要的只是它裡面的東西而已。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.249.242 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1746026096.A.1B9.html ※ 編輯: yam276 (123.193.249.242 臺灣), 04/30/2025 23:15:34
文章代碼(AID): #1e4Zvm6v (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1e4Zvm6v (Marginalman)