题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
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; }