码迷,mamicode.com
首页 > 其他好文 > 详细

1071 Speech Patterns

时间:2018-08-30 21:44:32      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:getline   lower   string   单词   题意   函数   enc   处理   http   

题意:给出一个字符串,找出词频最高的单词和相应的词频。(这个就是我之前做的一个项目的一个函数啊,哈哈哈)

思路:利用map定义字典map<string,int> dict。主要是字符串的截取,这里用上了几个比较方便的函数,总结如下:

几个有助于节省编码时间的字符串处理函数(在头文件<ctype.h>或<cctype>下)

  • isalnum 判断字符是否为字母(含大小写)或数字
  • isalpha 判断字符是否为字母(含大小写)
  • islower 判断字符是否为小写字母
  • isupper 判断字符是否为大写字母
  • isdigit 判断字符是否为数字
  • tolower 把大写字母转换成小写字母
  • toupper 把小写字母转换成大写字母

代码:

#include <iostream>
#include <cctype>//isalnum(),tolower()
#include <string>
#include <map>
#include <fstream>
using namespace std;
int main()
{
    //ifstream cin("pat.txt");
    string str;
    getline(cin,str);
    int len=str.size();
    for(int i=0;i<len;i++)
        str[i]=tolower(str[i]);
    map<string,int> dict;//定义字典
    int low=0;
    while(low<len){
        int i=low;
        while(i<len && isalnum(str[i])) i++;
        if(i>low){
            string word=str.substr(low,i-low);
//            if(dict.find(word)==dict.end())//这几句写不写都没关系
//                dict.insert(make_pair(word,1));
//            else
            dict[word]++;
        }
        low=i+1;
    }
    string ans;
    int maxFreq=0;
    for(auto it:dict){
        if(it.second>maxFreq){
            ans=it.first;
            maxFreq=it.second;
        }
    }
    cout<<ans<< <<maxFreq;
    return 0;
}

 

1071 Speech Patterns

标签:getline   lower   string   单词   题意   函数   enc   处理   http   

原文地址:https://www.cnblogs.com/kkmjy/p/9562714.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!