牛客网题解 | 单词识别

单词识别

一、题目链接

单词识别

二、题目

三、代码

cpp 复制代码
#include <iostream>
using namespace std;
#include <string>
#include <map>
#include <set>
typedef pair<string, int> Word;
class Compare 
{
  public:
    bool operator()(const Word& left, const Word& right) const 
    {
        // 次数从大到小排序
        // 如果次数相同,再按照单词字典序排序
        return (left.second > right.second) ||
               (left.second == right.second && left.first < right.first);
    }
};
int main() 
{
    string s;
    while (getline(cin, s)) 
    {
        map<string, int> m;
        string temp;

        // 分割单词,采用map统计每个单词出现的次数
        for (size_t i = 0; i < s.size(); ++i) 
        {
            if (s[i] == ' ' || s[i] == ',' || s[i] == '.') 
            {
                // 一个单词解析结束
                if (temp != "")
                    m[temp]++;
                temp = "";
            } 
            else 
            {
                // 注意:题目已说明不区分大小写,那么A和a算是一个单词,故需要将大小写统一
                temp += tolower(s[i]);
            }
        }

        // 将map中的<单词,次数>放到set中,并按照次数升序,次数相同按照字典序规则排序
        set<Word, Compare> s(m.begin(), m.end());

        // 将本次统计到的结果按照要求输出
        for (auto& e : s)
            cout << e.first << ":" << e.second << endl;
        cout << endl;
    }
    return 0;
}
相关推荐
哪 吒10 分钟前
【2025B卷】华为OD机试九日集训第2期 - 按算法分类,由易到难,提升编程能力和解题技巧(Python/JS/C/C++)
python·算法·华为od·华为od机试·2025b卷
熬了夜的程序员1 小时前
【华为机试】240. 搜索二维矩阵 II
线性代数·算法·华为·面试·矩阵·golang·深度优先
点云SLAM1 小时前
海森矩阵(Hessian Matrix)在SLAM图优化和点云配准中的应用介绍
算法·机器学习·矩阵·机器人·概率论·最小二乘法·数值优化
lifallen2 小时前
Kafka 如何优雅实现 Varint 和 ZigZag 编码
java·数据结构·分布式·算法·kafka
闪电麦坤952 小时前
数据结构:找出字符串中重复的字符(Finding Duplicates in a String)——使用哈希表
数据结构·算法
风吹落叶花飘荡2 小时前
客流分析核心算法 trajectory_event_analyzer数据结构
网络·数据结构·算法
西猫雷婶2 小时前
python学智能算法(二十七)|SVM-拉格朗日函数求解上
人工智能·python·算法·机器学习·支持向量机
稻草人22222 小时前
企业级用户签到业务解决方案,附完整代码(Redis,位图,二分)
后端·算法
丶小鱼丶2 小时前
数组算法之【合并两个有序数组】
java·算法
丁满与彭彭2 小时前
嵌入式学习笔记--MCU阶段--DAY08总结
笔记·单片机·学习