将一个字符串中出现次数最少的字符删除,这个字符串只有小写字母,不考虑空格。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char *delChar(char *s,int iLen)
{
char* p = (char*)malloc(sizeof(char)*iLen);
int pos,i,j;
int num[26] = {0};//存储每个字符出现的次数
for(i=0;i<iLen;i++)
{
pos = s[i]-'a';//每个字符在数组num中的位置
num[pos]++;
}
int k=0;
while(num[k]==0)//找到一个不为数的数
k++;
int index = k;
int min = num[k];//出现次数最小的数的出现次数
for(i=0;i<iLen;i++)
{
if(min > num[i] && num[i]!=0)
{
index = i;
min = num[i];
}
}
j=0;
for(i=0;i<iLen;i++)
if( num[(s[i]-'a')] !=min)//如果出现次数不等于最小,就将它输出
p[j++] = s[i];
p[j] = '\0';
return p;
}
int main()
{
char *array = "aabbcffeedeffgghi";
int iLen = strlen(array);
char* result = (char*)malloc(sizeof(char)*iLen);
result = delChar(array,iLen);
printf("%s\n",result);
return 0;
}