统计一篇英文文章中所有的单词以及出现的次数

本文分享了一道CC视频公司的面试题解答过程,重点讨论了英文单词匹配算法的问题,并提到了大小写敏感性的处理技巧。

这是CC视频的最后一道面试题,当时纯手写写的还不错,不过在匹配英文单词的时候大小写的情况没有统一([a-zA-Z]和toLowerCase()),回来之后重新写了。

要见怪不怪哦,个人有洁癖,请个位原谅!

<script src="https://code.youkuaiyun.com/snippets/288803.js" type="text/javascript"></script>

使用C++编写程序统计英语文章中某个单词次数,可按以下步骤实现: 1. **读取文章**:使用`fstream`库从文件中读取文章内容,将其存储到`string`对象里。 2. **处理文章内容**:把文章中的所有字母转换为小写,以此消除大小写的影响,并且去除标点符号。 3. **分割单词**:把文章内容分割成单个的单词,可使用`istringstream`来完成。 4. **统计指定单词次数**:遍历分割后的单词,若单词和指定单词相同,则增加计数器的值。 以下是示例代码: ```cpp #include <iostream> #include <fstream> #include <sstream> #include <string> #include <cctype> // 去除标点符号并转换为小写 std::string processWord(const std::string& word) { std::string result; for (char c : word) { if (std::isalpha(c)) { result += std::tolower(c); } } return result; } // 统计指定单词次数 int countWordOccurrences(const std::string& text, const std::string& targetWord) { std::istringstream iss(text); std::string word; int count = 0; std::string processedTarget = processWord(targetWord); while (iss >> word) { std::string processedWord = processWord(word); if (processedWord == processedTarget) { count++; } } return count; } int main() { std::ifstream file("article.txt"); if (!file.is_open()) { std::cerr << "无法打开文件" << std::endl; return 1; } std::stringstream buffer; buffer << file.rdbuf(); std::string article = buffer.str(); file.close(); std::string targetWord; std::cout << "请输入要统计单词: "; std::cin >> targetWord; int occurrences = countWordOccurrences(article, targetWord); std::cout << "单词 \"" << targetWord << "\" 现的次数为: " << occurrences << std::endl; return 0; } ``` 在上述代码中,`processWord`函数的作用是去除单词里的标点符号,并且将其转换为小写;`countWordOccurrences`函数的作用是统计指定单词文章现的次数;`main`函数负责读取文章文件,接收用户输入的指定单词,然后调用`countWordOccurrences`函数进行统计,最后输统计结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值