zoukankan      html  css  js  c++  java
  • PTA1071

    题意

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

    所求字符串要求:字符中可以含有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;
    }
    
  • 相关阅读:
    hdu1410 数学题组合概率 log优化
    Triangle
    Unique Paths II
    Unique Paths
    Pascal's Triangle II
    Pascal's Triangle
    Plus One
    Remove Duplicates from Sorted Array II
    Remove Duplicates from Sorted Array
    Remove Element
  • 原文地址:https://www.cnblogs.com/OFSHK/p/14495521.html
Copyright © 2011-2022 走看看