首页 > 其他 > 详细

1071 Speech Patterns (25分)

时间:2021-01-31 23:58:11      阅读:31      评论:0      收藏:0      [点我收藏+]

算法主要分为两个步骤:从给定字符串中分割出“单词”、计数出现次数最多的单词。

  1. 由题意可知,单词由大小写字母、数字组成(不妨称为有效字符),且由除有效字符外的字符进行分割,因此不妨枚举字符串中的字符,如果该字符是有效字符,则将其加入当前单词中(如果是大写字母,则将其替换为对应的小写字母);如果该字符不是有效字符,则跳过。之
  2. 遍历map中的所有元素,获取出现次数最多的单词。
string s;
unordered_map<string,int> mp;

bool check(char c)
{
    if(c >= ‘0‘ && c <= ‘9‘) return true;
    if(c >= ‘a‘ && c <= ‘z‘) return true;
    if(c >= ‘A‘ && c <= ‘Z‘) return true;
    return false;
}

int main()
{
    getline(cin,s);

    for(int i=0;i<s.size();i++)
    {
        if(check(s[i]))
        {
            string word;
            int j=i;
            while(j<s.size() && check(s[j])) word+=tolower(s[j]),j++;

            mp[word]++;
            i=j;
        }
    }

    string res;
    for(auto t:mp)
    {
        if(!res.size()) res=t.fi;
        else if(t.se > mp[res]) res=t.fi;
        else if(t.se == mp[res] && t.fi < res) res=t.fi;
    }
        
    cout<<res<<‘ ‘<<mp[res]<<endl;
    //system("pause");
    return 0;
}

1071 Speech Patterns (25分)

原文:https://www.cnblogs.com/fxh0707/p/14354438.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!