MST

星途 面试题库

面试题:Rust字符串高效分词及词频统计

假设你有一个很长的文本字符串,包含英文单词和标点符号,要求使用Rust编写一个高效的程序,将文本按单词进行分词,并统计每个单词出现的频率。在实现过程中要考虑性能优化,避免不必要的内存分配和拷贝。请描述你的实现思路并给出核心代码。
46.6万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 使用split_whitespace方法按空白字符对字符串进行分词,这样可以避免不必要的内存分配和拷贝,因为它返回的是一个迭代器,每次迭代返回一个&str类型的单词片段。
  2. 使用HashMap来统计每个单词出现的频率,HashMap在查找和插入操作上具有较好的性能。

核心代码

use std::collections::HashMap;

fn main() {
    let text = "this is a test string. this string is for testing word frequency.";
    let mut word_count = HashMap::new();

    for word in text.split_whitespace() {
        // 去除单词两端的标点符号
        let clean_word = word.trim_matches(|c| c.is_ascii_punctuation());
        *word_count.entry(clean_word).or_insert(0) += 1;
    }

    for (word, count) in word_count {
        println!("{}: {}", word, count);
    }
}