用map 统计英文单词个数

本文介绍了一种统计英文文章中单词出现频率的方法。通过使用C++标准模板库中的map数据结构来实现单词计数,确保了输出结果按照字典顺序排列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给出一篇英文文章,现在需要统计文章中出现英文单词的数量。

输入格式:

第一行一个T,代表数据组数

对于每组数据,第一行一个n,代表文章中单词的个数,其后n行每行一个只包含小写字母的长度为1到10的字符串

输出格式:

每组数据输出若干行,每行输出单词以及它出现的次数(中间空格隔开),不同单词按单词字典序从小到大输出

保证单词出现的总次数<=1e5

输入样例:

1
8
it
is
a
pen
it
is
a
dog

输出样例:

a 2
dog 1
is 2
it 2
pen 1

 

 #include<bits/stdc++.h>
using namespace std;
int main(){
    int t,n;
    string s;
    map<string,int>a;
    cin>>t;
    while(t--){
        cin>>n;
        while(n--){
            cin>>s;a[s]++;
        }
        map<string,int>::iterator it;
    for(it=a.begin();it!=a.end();it++)
        cout<<it->first<<' '<<a[it->first]<<endl;
        a.clear();
    }
     
    return 0;
}

### 使用 C++ 统计文本中英文单词数量 为了实现这一功能,可以采用 `unordered_map` 来高效地记录每个单词出现的频次。下面是一个完整的解决方案: #### 准备工作 首先确保能够逐个读取文件中的单词,并处理可能存在的标点符号等问题。 #### 实现方案 通过定义一个函数来完成整个流程,此函数接收文件路径作为参数并返回统计结果。 ```cpp #include <iostream> #include <fstream> #include <sstream> #include <unordered_map> #include <cctype> std::unordered_map<std::string, int> countWords(const std::string& filePath){ std::ifstream file(filePath); if (!file.is_open()) { throw "无法打开文件"; } std::unordered_map<std::string, int> wordCount; std::string line; while (getline(file, line)) { // 按行读取文件内容 std::istringstream stream(line); std::string word; while(stream >> word){ // 提取出每一行里的各个单词 // 清除前后空白字符以及结尾处可能出现的标点符号 size_t start = word.find_first_not_of(" ,.-"); size_t end = word.find_last_not_of(" ,.-"); if(start != std::string::npos && end != std::string::npos){ word = word.substr(start,end-start+1); ++wordCount[word]; // 更新哈希表里对应单词的数量 } } } return wordCount; } ``` 上述代码实现了从指定路径加载文本文件的功能,并利用字符串流提取每行文字再进一步分割成单个词语[^1]。对于每一个有效单词,在去除不必要的非字母数字字符之后将其转换为小写形式以便于比较(这里假设不区分大小写的场景),最后更新到无序映射容器内以追踪其重复次数[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星河欲转。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值