描述
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
注意每个输入文件有多组输入,即多个字符串用回车隔开
输入描述:
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:
删除字符串中出现次数最少的字符后的字符串。
示例1
输入:
abcdd
aabcddd
复制
输出:
dd
aaddd
复制
先遍历字串,统计出各字符的数目,并找出最小值。
再一次遍历字串,若字符对应的数目不是最小的,那么就输出该字符。
#include<stdio.h>
#include<string.h>
int main(int argc, char** argv)
{
int a[26] = {0};
char str[21] = {0};
int i;
int min;
while(scanf("%s", str) != EOF)
{
for(i=0; i<strlen(str); i++)
{
a[str[i]-'a']++;
}
for(i=0; i<sizeof(a)/sizeof(*a); i++)
//printf("a[%d]=%d\n", i, a[i]);
min = 20;
for(i=0; i<sizeof(a)/sizeof(*a); i++)
{
if(a[i] && min>a[i])
{
min = a[i];
//printf("min=%d\n", min);
}
}
//printf("min=%d\n", min);
for(i=0; i<strlen(str); i++)
{
if(a[str[i]-'a'] > min)
{
printf("%c", str[i]);
}
}
printf("\n");
memset(str, 0, sizeof(str));
memset(a, 0, sizeof(a));
}
}