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

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")

相关文章:

  • 【pyqt】(十一)单选框
  • IDEA 2024.1.7 Java EE 无框架配置servlet
  • C# 简介以及与C、C++的区别
  • 前缀和的利用 前缀和的扩展问题
  • Figma 对图片进行模糊处理
  • 【记录】Python3|Linux下安装Virtualenv和virtualenvwrapper用于处理虚拟环境
  • nodejs去除本地文件html字符
  • 【蓝桥杯】每天一题,理解逻辑(3/90)【Leetcode 快乐数】
  • 利用 ArcGIS Pro 快速统计省域各市道路长度的实操指南
  • 专业工具,提供多种磁盘分区方案
  • Harmony os next~HarmonyOS Ability与页面跳转开发详解
  • 深入理解 C# 特性(Attributes):概念、应用与自定义
  • VS2022C#windows窗体应用程序调用DeepSeek API
  • Vue父子组件传递笔记
  • PostgreSQL 安装与使用
  • 安装与配置 STK-MATLAB 接口
  • 互联网摸鱼日报(2025-03-04)
  • android11使用gpio口控制led状态灯
  • 6. PromQL的metric name(在node exporter复制下来交给AI解释的)
  • k8s v1.28.15部署(kubeadm方式)
  • 新城悦服务:独董许新民辞任,新任独董与另两人组成调查委员会将调查与关联方资金往来
  • 李成钢出席中国与《数字经济伙伴关系协定》成员部级会议
  • 上海市税务局回应刘晓庆被举报涉嫌偷漏税:正依法依规办理
  • 俄谈判代表团已抵达土耳其,谈判预计在莫斯科时间10时左右开始
  • 坚持吃素,是不是就不会得高血脂了?
  • 国台办:民进党当局刻意刁难大陆配偶,这是不折不扣的政治迫害