Re: [闲聊] 每日leetcode

楼主: yam276 ('_')   2025-04-30 23:14:54
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,我要的只是它里面的东西而已。

Links booklink

Contact Us: admin [ a t ] ucptt.com