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

C++ 单词识别_牛客题霸_牛客网

点击链接即可查看题目: 单词识别_牛客题霸_牛客网

一、题目

描述

输入一个英文句子,把句子中的单词(不区分大小写)按出现次数按从多到少把单词和次数在屏幕上输出来,次数一样的按照单词小写的字典序排序输出,要求能识别英文单词和句号。

输入描述:

输入为一行,由若干个单词和句号组成

输出描述:

输出格式参见样例。

示例1

输入:

A blockhouse is a small castle that has four openings through which to shoot.

复制输出:

a:2
blockhouse:1
castle:1
four:1
has:1
is:1
openings:1
shoot:1
small:1
that:1
through:1
to:1
which:1

二、解题思路以及代码

 

#include <iostream>
#include <string>
#include <map>
#include <vector>
#include<algorithm>
using namespace std;

class compare
{
public:
    bool operator()(const pair<string,int> p1, const pair<string,int> p2)
    {
        return p1.second > p2.second || (p1.second == p2.second && p1.first < p2.first);
    }
};
int main() 
{
    string s;
    map<string,int> countmap;
    vector<string> v;
    while (getline(cin, s)) 
    { 
        // 统一转换为小写
        for(auto& e : s)
        {
            if('A' <= e && e < 'a')
                e += 'a' - 'A';
        }
        // 截取单词存在vector
        string cur;
        for (int i = 0; i < s.size(); i++)
        {
            if (s[i] == '.' || s[i] == ' ')
            {
                v.push_back(cur);
                cur.clear();
            }
            else
            {
                cur.push_back(s[i]);
            }
        }
        // 利用map存进去单词,并且按照字典序排序
        for(auto& e : v)
        {
            countmap[e]++;
        }
        // 存到vector,
        vector<pair<string,int>> vp(countmap.begin(),countmap.end());
        // 将其按照字典序以及次数排序
        sort(vp.begin(), vp.end(),compare());

        for(auto& e : vp)
        {
            cout << e.first << ":"<< e.second << endl;
        }
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

http://www.kler.cn/a/574408.html

相关文章:

  • flink重启策略
  • JMeter 断言最佳实践
  • plt和cv2有不同的图像表示方式和颜色通道顺序
  • pytorch3d学习(一)——开始(架构概述、输入数据、相机坐标系、纹理渲染)
  • Golang的网络流量控制
  • 【每日八股】Redis篇(三):持久化(上)
  • 自律linux 第 34 天
  • 怎么做数据冷热分离?怎么做分库分表?为什么要用ES?
  • 大模型——模型上下文协议 (MCP)
  • 配电柜/环网柜温湿度控制装置 功能参数介绍
  • Android MVC、MVP、MVVM三种架构的介绍和使用。
  • 2025-03-06 ffmpeg提取SPS/PPS/SEI ( extradata )
  • idea中的查看git历史记录,不显示详细信息
  • 锂电池升压到5V并且可以锂电池充电的芯片SM5401
  • HTML + CSS 题目
  • 关于服务器无法下载kcv_encoder.h5权重的解决方法
  • 深度求索(DeepSeek)开源周技术全景与行业影响研究报告
  • 部署RabbitMQ集群详细教程
  • Modbus协议(TCP)
  • 前端基础之ajax