题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9
解题思路
设置一个二维数组当做字典,第一列存字母,第二列存字母出现的次数
通过两个for循环
#include <stdio.h> #include <string.h> int main() { int lib[26][2]={0}; char arry[20]={'\0'},a='a'; int i=0,j=0,temp=20; /*将字母a-z写入字典第一列*/ for(i=0;i<26;i++) { lib[i][0]=(int)a; a++; } i=0; /*接收待处理字符串*/ scanf("%s",&arry); /*统计各个字符串出现的次数*/ for(i=0;arry[i]!='\0';i++) { for(j=0;j<26;j++) { if((int)arry[i]==lib[j][0]) { lib[j][1]++; break;//减少循环次数 } } } /*统计出现次数最少的字符出现的次数*/ for(i=0;i<26;i++) { if(lib[i][1]==0||lib[i][1]>temp) { continue;//减少循环次数 } if(lib[i][1]>0&&lib[i][1]<temp) { temp=lib[i][1]; } } /*将待处理字符串与字典比较,当字符相同且出现次数大于最少次数,输出当前字符*/ for(i=0;arry[i]!='\0';i++) { for(j=0;j<26;j++) { if((int)arry[i]==lib[j][0]&&lib[j][1]>temp) { printf("%c",arry[i]); break;//减少循环次数 } } } return 0; }