我觉得用桶排序是比较正规的方法,也是刚学,要多练练,其他常规方法我再看下,后续更新
#include<stdio.h> #include<math.h> #include<string.h> int isPrimeNum(int num) //判断质数的函数 { for (int i = 2; i <= sqrt(num); i++) { if (!(num % i)) return 0; } if (num != 1 && num != 0) //注意哦,1和0都不是质数,这基本常识我都忘光了... return 1; else return 0; } int main() { //用桶的原理来统计,我也是自学的,上次看到一位大佬有用的,就去查了下用法 int count[26] = { 0 }, max = 0, i = 0 ,min =0 ; char ch = 0; while ((ch = getchar()) != '\n') { if (isupper(ch)) //调用isupper函数判断大写 ch = ch + 32; count[ch - 'a']++; min = ch - 'a'; } for (i = 0; i < 26; i++) { max = count[max] > count[i] ? max : i ; //count[max]是次数,max是具体的字母 if (count[i] > 0) min = count[min] < count[i] ? min : i; } if (isPrimeNum(count[max] - count[min])) printf("Lucky Word\n%d\n", count[max] - count[min]); else printf("No Answer\n0\n"); return 0; }