解题思路:
统计所有字母 出现的次数 -》哪个字母出现的最少 -》 剔除最少字母后打印
1、字母统计
遍历后,分别其放到array 数组中去, 数组下标则是该字母 与‘a’ 之间的距离,出现一次, 对应下标成员变量+1
2、哪个字母出现的次数最少,在这里我们做了一个思维转换, 如果我们的目标是某个 或者多个字母,这样难度变大。
但是最少的字母 出现的个数(min) 肯定是唯一且 肯定的。
3、剔除字母后打印
还是循环遍历,如果该字母 出现次数 比min变量大,则打印该字母
特别注意:字母统计每一次输入前后需要 将其清零,希望大家也注意,
#include <stdio.h>
char str[21] = {0};
while (scanf("%s", str) != EOF) {
int array[26] = {0};
int length = strlen(str);
for (int i = 0; i< length; i++) {
array[str[i] - 'a']++;
}
int min = 20;
for (int j = 0; j< 26; j++) {
if ((array[j] != 0) && (array[j] < min)) {
min = array[j];
}
}
for(int k = 0; k < length; k++) {
if(array[str[k] -'a'] > min) {
printf("%c", str[k]);
}
}
printf("\n");
}
return 0;
}