GESP 3级真题

3.2 编程题 2

时间限制:1.0 s

内存限制:512.0 MB

3.2.9 词频统计

3.2.10 题目描述 在文本处理中,统计单词出现的频率是一个常见的任务。现在,给定 个单词,你需要找出其中出现次数最多的单 词。在本题中,忽略单词中字母的大小写(即 Apple 、 apple 、 APPLE 、 aPPle 等均视为同一个单词)。 请你编写一个程序,输入 个单词,输出其中出现次数最多的单词。 3.2.11 输入格式 第一行,一个整数 ,表示单词的个数; 接下来 行,每行包含一个单词,单词由大小写英文字母组成。 输入保证,出现次数最多的单词只会有一个。 3.2.12 输出格式 输出一行,包含出现次数最多的单词(输出单词为小写形式)。

3.2.13 样例

3.2.13.3 输入样例 1

6
Apple
banana
apple
Orange
banana
apple

3.2.13.4 输出样例 1

apple

3.2.14 数据范围 对于所有测试点1<=n<=100 ,每个单词的长度不超过30 ,且仅由大小写英文字母组成。

因为单词较少,我们可以用一个和所有比较,以下是代码:

#include<bits/stdc++.h>
using namespace std;
int max(int b[],int n){//找最大值下标
	int g=0;
  for(int i=0;i<n-1;i++){
     if(b[i]>b[i-1]){//与其他元素比较
   g=i;
  }
}
  return g;
}
string tolower(string s){//把大写字母变成小写字母
for(int i=0;i<s.size();i++)
if(s[i]>='A'&&s[i]<='Z') s[i]+=32;
return s;
}
int main(){
 int n;
 cin>>n;
 string a[n];
 int b[n+5];
 for(int i=0;i<n;i++){
 cin>>a[i];
 a[i]=tolower(a[i]);
 }
 for(int i=0;i<n;i++){	
 	int s=0;
   for(int j=i;j<n;j++){
   if(a[i]==a[j]) s++;//累加重复的次数
   }
  b[i]=s;统计所有的单词重复的次数
 }
cout<<a[max(b,n)];//求哪个单词重复的次数最大
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值