面试题答案
一键面试设计思路
- 选择合适的数据结构:为了统计每种字符出现的次数,我们可以使用
HashMap
。HashMap
可以高效地存储键值对,其中键为字符,值为该字符出现的次数。 - 字符编码处理:由于字符串可能包含各种语言的字符,Rust中的
char
类型已经可以处理Unicode字符,无需额外的编码转换。 - 性能优化:
- 遍历字符串时,采用迭代器方式,迭代器在Rust中具有高效的内存使用和处理速度。
- 对于非常长的字符串,可以考虑分块处理,然后合并统计结果,但这里先采用简单直接的方式,如果性能不满足再优化。
核心代码
use std::collections::HashMap;
fn count_characters(s: &str) -> HashMap<char, u32> {
let mut char_count = HashMap::new();
for c in s.chars() {
*char_count.entry(c).or_insert(0) += 1;
}
char_count
}
你可以通过以下方式调用这个函数:
fn main() {
let long_string = "这里是包含各种语言字符的非常长的字符串...";
let result = count_characters(long_string);
for (char, count) in result {
println!("字符 '{}' 出现次数: {}", char, count);
}
}