实现删除字符串中出现次数最少的字符

来源:互联网 发布:淘宝直通车如何出价 编辑:程序博客网 时间:2024/04/30 06:50
/*
题目 --华为
描述: 
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。 
题目类别: 字符串 
难度: 中级 
运行时间限制: 10Sec 
内存限制: 128MByte 
阶段: 入职前练习 
输入: 
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。 
输出: 
删除字符串中出现次数最少的字符后的字符串。 
样例输入: 
abcdd 
样例输出:
dd

*/

void delete_str(char* str){//思路:传过来的是一个字符串常量,无法进行删除,因此需要拷贝出来存到数组里面进行删除,然后重新组合新字符串去覆盖原来的指针。 int len_str=strlen(str);    char* s=(char*)malloc(len_str*sizeof(char));char ch[26]="";//计算每个字符的数量for(int i=0;i<len_str;i++)  ++ch[*(str+i)-'a']; //判断出字符个数最少的多少--min个int min=len_str;for(int i=0;i<26;i++)if(ch[i]<min && ch[i]>0){   min=ch[i];}//在输入字符串中,把字符个数不是min的提取出来int j=0;for(int i=0;i<len_str;i++)if(ch[*(str+i)-'a']!=min){               s[j]=  *(str+i);   j++;}s[j]='\0';//给新字符串添加结束符号cout<<s<<endl;free(s);}


1 0