描述: 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
知识点: 字符串
题目来源: 内部整理
练习阶段: 中级
运行时间限制: 无限制
内存限制: 无限制
输入:
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出:
删除字符串中出现次数最少的字符后的字符串。
样例输入: abcdd
样例输出: dd
#include<iostream>
#include<string>
using namespace std;
int main()
{
char c,str[20],str_out[20],alpha[26]={0};//alpha统计每个小写字母出现次数
int mincnt=20;
cin>>str;
for(int i=0;i<strlen(str);i++)
alpha[str[i]-'a']++;
for(int i=0;i<26;i++)
if(alpha[i]!=0&&alpha[i]<mincnt)
mincnt=alpha[i];//mincnt存放出现的最少次数(不为0)
int j=0;
for(int i=0;i<=strlen(str);i++)
if(alpha[str[i]-'a']!=mincnt)//若原来字母不是出现次数最少则放入str_out中,注意str最后的'\0'也要复制到str_out中
str_out[j++]=str[i];
cout<<str_out<<endl;
//system("pause");
return 0;
}