单词统计问题
2016-08-18 09:16
253 查看
华为OJ
输入一行英文文本,要求输出出现频率最高和最低的单词,中间以,.和空格进行分割,大小不同的单词视为同一个,如果单词数目相同,则输出第一次出现的那个。输出均为小写形式。如”Hello world, i said hello world to the world.”输出world,i
代码如下:
输入一行英文文本,要求输出出现频率最高和最低的单词,中间以,.和空格进行分割,大小不同的单词视为同一个,如果单词数目相同,则输出第一次出现的那个。输出均为小写形式。如”Hello world, i said hello world to the world.”输出world,i
代码如下:
#include <iostream> #include<vector> #include<string> #include<algorithm> using namespace std; bool cmp(pair<string,int> data,pair<string,int> data2) { return (data.second > data2.second); } int main() { string patter =", ."; string source ="Hello world, i said hello world to the world...."; transform(source.begin(),source.end(),source.begin(),tolower); vector<string> result; int size = source.size(); int i = 0; for(;i < size;i++) { auto found = source.find_first_of(patter,i); if(found != string::npos) { result.push_back(source.substr(i,found-i)); i = found; } else break; } if(i != size-1) { result.push_back(source.substr(i)); } for(auto it = result.begin();it != result.end();) { if(*it == "" || *it =="." || *it ==",") it = result.erase(it); else ++it; } vector<pair<string,int>> r; for(int i = 0;i < result.size();++i) { r.push_back(make_pair(result[i],1)); for(int j = 0;j < r.size()-1;++j) { if(result[i] == r[j].first) { r[j].second++; r.pop_back(); break; } } } stable_sort(r.begin(),r.end(),cmp); cout<<r[0].first<<","; for(int i = 0;i < r.size();++i) { if(r[i].second == 1) { cout<<r[i].first<<endl; break; } } }
相关文章推荐
- 华为路由器密码恢复
- 华为交换机的后缀详解
- 华为RAID 1阵列卡设置教程图文详解
- 华为的IPD流程
- 华为手机真机调试设置
- 内部人建议华为炸掉研发金字塔,然后任正非给全公司发了封邮件⋯⋯
- 以华为为例告诉你HRBP 到底是什么?
- 华为OR小米,谁是智能手机出货量之王?
- 抢先小米!NFC支付又添一家 华为推出Huawei Pay
- 华为员工真实工资揭秘:十年青春才能换来百万年薪
- 深刻!一张图看懂在华为和腾讯工作的区别
- SE100101系统概述
- 华为防火墙配置演示 Quidway SecPath
- 华为防火墙地址转换
- 华为(VRRP-OSPF-STP-SNMP链路聚合)
- S9300做VRRP的配置
- 配置负载分担VRRP
- 华为9306(9300系列)在不删除配置的情况下恢复密码
- 思科和华为交换机常用命令对比学习