您的位置:首页 > 其它

华为OJ(删除字符串中出现次数最少的字符)

2015-08-27 13:16 232 查看
描述: 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。

知识点: 字符串

题目来源: 内部整理

练习阶段: 中级

运行时间限制: 无限制

内存限制: 无限制

输入:

字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: