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)];//求哪个单词重复的次数最大
}