解题思路:
用数组记录每个字母出现的次数,然后找出最大值和最小值,再判断是否质数。稍难的点在于很多同学不会用数组记录每个字母出现的次数,可能有些人就是先输入个字符串然后去遍历,我滴个乖乖,这样就搞得很麻烦了哈。话不多说看代码,就知道这里怎么处理了,看不懂的话就去调试一遍,随便用个例子就行。
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
string arr;
char ch;
int ans[26], maxn, minn = 100;
bool zhishu(const int x)
{
if (x == 0 || x == 1) return false;
for (int i = 2; i <= sqrt(x); ++i) if (x % i == 0) return false;
return true;
}
int main()
{
while (cin >> ch) {
if (arr.find(ch) != -1) ++ans[arr.find(ch)];
else {
arr += ch;
++ans[arr.find(ch)];
}
}
for (int i = 0; i < 26; ++i) {
maxn = max(ans[i], maxn);
if(ans[i]!=0) minn = minn < ans[i] ? minn : ans[i];
}
if (zhishu(maxn - minn)) cout << "Lucky Word" << endl << maxn - minn;
else cout << "No Answer" << endl << 0;
return 0;
}