作者:
yam276 ('_')
2025-04-30 23:14:541295. 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,我要的只是它裡面的東西而已。