题解 | #密码验证合格程序#
删除字符串中出现次数最少的字符
http://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9
#include <stdio.h>
#include <string.h>
static char g_input[21] = {0};
static char g_acount[26] = {0};
int main()
{
while(gets(g_input) != NULL) {
int i, j, k = strlen(g_input);
memset(g_acount, 0, 26);
for(int i = 0; i < k; i++) g_acount[g_input[i] - 'a']++; j = 20;
for(int i = 0; i < 26; i++) if((g_acount[i]) && (g_acount[i] < j)) j = g_acount[i];
for(int i = 0; i < k; i++) if (g_acount[g_input[i] - 'a'] > j) putchar(g_input[i]); putchar('\n');
}
return 0;
}
代码执行:
(1) 统计 26 个字母各自出现的次数;
(2) 对于出现的字母(非零次),找到一个最小的“次数”值 j ;
(3) 将超过最小次数的字母全都按顺序打印输出;