浏览器标题切换
浏览器标题切换end

PTA1071 - Speech Patterns - map计算不同单词个数

题意

输出给定字符串出现最多的字符串(小写输出)和出现次数。

所求字符串要求:字符中可以含有A-Z、0-9。

比如说题目给出的Can1,我们可以转换成can1,can1就算一个字符串整体,而不是单独的取出can1里面的can来加一。

思路

先把大写字母全部转换成小写,然后再用map存储单词个数即可,简单用法。

注意

  1. 有个特殊的数据要判断,不写的话牛客可以AC,但是PTA最后一组数据会报错。

    特例:给出的字符串最后一个字符如果不是'0'-'9'、'a'-'z'的话,单独算一个字符串判断。

  2. for循环的时候注意判断空字符串(空格)出现的情况

  3. 也可以用sstreamstring来处理一下,都可以的

AC代码

#include<iostream>
#include<string.h>
#include<cmath>
#include<map>

using namespace std;
#define inf 0x3f3f3f3f
typedef long long ll;

map<string,int> mp;

int main()
{
    string s;
    getline(cin,s);
    int l=s.length();
    for(int i=0;i<l;i++)
    {
        if(s[i]>='A'&&s[i]<='Z')
            s[i]+=32;
    }
    string ss;
    for(int i=0;i<l;i++)
    {
        if((s[i]>='0'&&s[i]<='9')||(s[i]>='a'&&s[i]<='z'))
            ss+=s[i];
        else if(ss!="")
            mp[ss]++,ss="";
    }
    ss=s[l-1];  // 最后一个字符特判
    if(!(s[l-1]>='0'&&s[l-1]<='9')||!(s[l-1]>='a'&&s[l-1]<='z'))
        mp[ss]++;
    string ans;
    int ma=0;
    for(auto&i:mp)
    {
        if(i.second>ma)
            ma=i.second,ans=i.first;
    }
    cout<<ans<<" "<<ma<<endl;
    return 0;
}
posted @   抓水母的派大星  阅读(91)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
历史上的今天:
2020-03-07 寒假Day44:JAVA-异常处理
2020-03-07 寒假Day44:bfs
点击右上角即可分享
微信分享提示