当前位置: 首页 > news >正文

GESP2025年3月认证C++三级( 第三部分编程题(2、词频统计)


一、🧙‍♂️ 故事背景:单词王国选举大会

在“单词王国”里 🏰
有很多单词来参加“最受欢迎单词”比赛!

👉 比如:

Apple banana apple Orange banana apple

二、🎯 任务

👉 找出:

出现次数最多的单词!

👉 注意:

Apple = apple = APPLE(不区分大小写)

三、算法分析:

🧠 第一步:判断标准


👉 输入:n个单词
👉 输出:出现次数最多的那个(全部变小写)


🎭 第二步:用故事理解

你是一个统计官 👮‍♂️

你拿着一本“记录本”📒:

👉 每看到一个单词,就记下来:

apple → +1 banana → +1

🧠 第三步:核心工具 —— map


1、🌟 什么是 map?

👉 就像一个“字典”📖:

单词 → 出现次数

2、✏️ 举例

map<string, int> cnt;

表示:

"apple" → 3 "banana" → 2

🧠 第四步:关键难点 —— 大小写统一


1、🎭 故事

“Apple”和“apple”其实是同一个人 😄

👉 所以必须全部变成:

apple

2、✏️ 方法

transform(s.begin(), s.end(), s.begin(), ::tolower);

👉 作用:

全部变小写!

🧠 第五步:一步一步执行


1、🎯 输入

6 Apple banana apple Orange banana apple

2、✏️ 过程

第1个

Apple → apple → cnt["apple"] = 1

第2个

banana → cnt["banana"] = 1

第3个

apple → cnt["apple"] = 2

第4个

Orange → orange → cnt["orange"] = 1

第5个

banana → cnt["banana"] = 2

第6个

apple → cnt["apple"] = 3

🎉 最终统计

apple → 3 ⭐ banana → 2 orange → 1

🧠 第六步:找最大值


1、👉 再遍历一遍:

谁的次数最多?

2、👉 找到:

apple

✏️ 第七步:完整代码

#include <iostream> #include <map> #include <algorithm> using namespace std; int main() { int n; cin >> n; map<string, int> cnt; int mx = 0; string ans; for(int i = 0; i < n; i++) { string s; cin >> s; // 全部变小写 transform(s.begin(), s.end(), s.begin(), ::tolower); cnt[s]++; // 统计次数 // 更新最大值 if(cnt[s] > mx) { mx = cnt[s]; ans = s; } } cout << ans << endl; return 0; }

也可以手写一个字符串转小写函数:

#include <iostream> #include <map> #include <string> using namespace std; // 手动实现字符串转小写函数 string toLower(string s) { string result = ""; for (char c : s) { if (c >= 'A' && c <= 'Z') { result += (c - 'A' + 'a'); } else { result += c; } } return result; } int main() { int n; cin >> n; map<string, int> cnt; int mx = 0; string ans = ""; for (int i = 0; i < n; i++) { string s; cin >> s; // 使用手动实现的转小写函数 string lower_s = toLower(s); cnt[lower_s]++; // 更新最大值和答案 if (cnt[lower_s] > mx) { mx = cnt[lower_s]; ans = lower_s; } } cout << ans << endl; return 0; }

🧪 第八步:运行结果

输入:

6 Apple banana apple Orange banana apple

输出:

apple

💡 第九步:核心总结


1、🌟 这题本质

统计 + 找最大值

2、🌟 三个关键点


① 用 map 统计

cnt[s]++;

② 统一大小写

transform(..., ::tolower);

③ 边统计边更新答案(更高效!)

if(cnt[s] > mx)

🧙‍♂️ 记忆口诀

单词统计用map 大小写要统一 边数边比找最大

http://www.jsqmd.com/news/582932/

相关文章:

  • 拟南芥基因家族序列的高效提取与ID处理技巧
  • docker 安装 MrDoc
  • OriginPro 2023保姆级教程:三步搞定柱状图+点线图组合,让你的科研图表颜值飙升
  • CT107D开发板实战:从零搭建51单片机红外遥控系统(附完整代码)
  • 基于S7-200 PLC的教室灯控制系统的全面设计与实现:电气设计、程序设计及组态王的应用
  • **AI仿真人剧厂家2025推荐,专业定制与沉浸式体验的行业标杆**据中国信通院2025年人工智能数字内容产业白皮书显示,2025年国内AI仿真人剧市场规模预计突破120亿元,年增长率高达65%。
  • 2025最权威的降重复率方案实际效果
  • 告别黑屏!用Wireshark+RSView调试速腾雷达,一次讲清IP、端口和点云显示的逻辑
  • 嘎嘎降AI和去AIGC哪个更适合文科论文?深度对比评测
  • 建议收藏!我开发了一个免费无限制的AI绘画公益站!
  • 暗黑破坏神2存档修改神器:从入门到精通的完整指南
  • 若依框架代码生成器深度使用指南:从单表生成到理解其MVC代码结构
  • Python实战:5分钟搞定Infoway期货行情API接入(附完整代码)
  • 基于四轮转向与模型预测控制的轨迹跟踪控制策略及其转角分配研究——前轮与四轮转向轨迹跟踪效果对比
  • ViGEmBus技术指南:构建跨平台游戏控制器兼容解决方案
  • 四路抢答器这玩意儿在竞赛现场特别实用,今天咱们直接开整基于西门子S7-200 PLC和MCGS触摸屏的实现方案。老规矩,先从硬件接线开始唠
  • 如何用LAMP.sh构建企业级Web应用环境?完整部署方案解析
  • 2025届学术党必备的六大降重复率平台实际效果
  • Python-for-Android终极指南:用Python代码打造原生Android应用
  • 开关电源12种拓扑功率器件选型指南
  • OpenClaw效率对比:人工vsQwen2.5-VL-7B处理100张图片耗时测试
  • Spring AI 助力 Java 开发者构建全功能 AI 智能体
  • 搞懂PLC换热站控制,从组态开始动手
  • NodeGit自定义扩展开发终极指南:如何为特定需求创建专属Git工具
  • 2026年行业内防爆危废间厂家,耐候性能良好,防爆危废间适应多环境 - 品牌推荐师
  • 【访谈】用数据分析赋能广告的美团运营:我的 CDA 数据分析二级备考经验
  • 2025豆包AI高阶视频教程精准提示词合集大模型通用附教程资料大全 ​​​
  • AI仿真人剧供应商2025推荐,高效内容创作与分发解决方案
  • Java 开发者零成本上手:用 Spring AI Alibaba + Ollama 本地跑通 DeepSeek 大模型
  • 阈值之惑:静态分析工具准确性对大语言模型漏洞修复效能的影响研究