单词分析
https://www.lanqiao.cn/problems/504/learning/
- 题目描述
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。 - 输入描述
输入一行包含一个单词,单词只由小写英文字母组成。
对于所有的评测用例,输入的单词长度不超过 1000。 - 输出描述
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。 - 输入输出样例
示例 1
输入
lanqiao
输出
a
2
示例 2
输入
longlonglongistoolong
输出
o
6
题目分析: 用hash定址法。即,数组下标来对应的统计个数
#include <iostream>
# include <bits/stdc++.h>
using namespace std;
int c[26];
int main()
{
string a;
cin>>a;int max=0;
int i;int b=97;char x;
for(i=0;i<a.length();++i)
{
++c[a[i]-97];
}
for(i=0;i<26;++i)
{
if(c[i]>max){
max=c[i];
x=i+97;
}
}
cout<<x<<endl<<max<<endl;
return 0;
}
笨小孩
https://www.lanqiao.cn/problems/527/learning/
- 题目描述
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设 maxnmaxn 是单词中出现次数最多的字母的出现次数,minnminn 是单词中出现次数最少的字母的出现次数,如果 maxn-minnmaxn−minn 是一个质数,那么笨小猴就认为这是个 Lucky Word,这样的单词很可能就是正确的答案。 - 输入描述
输入一行,是一个单词,其中只可能出现小写字母,并且长度小于 100。 - 输出描述
输出两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出Lucky Word,否则输出No Answer;
第二行是一个整数,如果输入单词是 Lucky Word,输出 maxn-minnmaxn−minn 的值,否则输出 0。 - 输入输出样例
示例 1
输入
error
copy
输出
Lucky Word
2
示例 2
输入
Olympic
copy
输出
No Answer
0
本题解析:
1.统计各个字符的个数(用hash定址法 ,即数组下标来统计)
2.找到最多次数的和最少次数的
3.质数判断
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
char str[105];
int a[27]={
0};
int main()
{
// 请在此输入您的代码
gets(str);
int max=-1;
int min=1000;
int number=0;
int i,j;
int flag=0;
for(i=0;i<strlen(str);i++)
{
if(str[i]>='a')
{
a[str[i]-'a']++;
}
}
for(i=0;i<26;i++)
{
if(a[i]>max)
max=a[i];
if(a[i]<min&&a[i]>0)
min=a[i];
}
number=max-min;
for(i=2;i<sqrt(number);i++)
{
if(number%i==0)//不是质数
{
flag=1;//用来标志不是质数
break;
}
}
if(number==0||number==1)//排除一些特殊的情况
{
printf("No Answer\n0");
return 0;
}
if(!flag)
{
printf("Lucky Word\n");
}
else
{
printf("No Answer\n0");
return 0;
}
printf("%d\n",number);
return 0;
}