题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9
#include <stdio.h>
#include<string.h>
int main()
{
char arr1[20]="";
int arr2[26]={0};
int i=0,j=0,num=21;
scanf("%s",arr1);
int sz=strlen(arr1);
//将出现的字母ascii码作为下标,每出现一次,该下标对应的数组项就+1
for(i=0;i<sz;i++)
{
arr2[(int)arr1[i]-97]++;
}
//字符串最多只有20个字符,因此一定有出现零次的,所以字符串中实际出现次数最少也为1
//循环一次,找出最少的出现次数,哪一项大于0,并且数值最小,它的下标就对应出现次数最少的字符
for(i=0;i<sz;i++)
{
if((arr2[(int)arr1[i]-97]>0)&&arr2[(int)arr1[i]-97]<num)
{
num=arr2[(int)arr1[i]-97];
}
}
//大于该出现次数的,依次输出,不会改变顺序
for(i=0;i<sz;i++)
{
if(arr2[(int)arr1[i]-97]>num)
{
printf("%c",arr1[i]);
}
}
}
return 0;
}