描述
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
注意每个输入文件有多组输入,即多个字符串用回车隔开
输入描述:
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:
删除字符串中出现次数最少的字符后的字符串。
思路一:
使用map用键值对的方法
#include <iostream>
#include <string>
#include <map>
using namespace std;
void manageStr(string str){
map<char,int> data;
int min = 1000;
char key;
for(int i=0;i<str.size();i++){
if(data.count(str[i])){ //如果存在键,把其中的值自加
data[str[i]]++;
}else {
data[str[i]] = 1; //第一次记录并置1
}
}
//获取最小的键值
for(map<char,int>::iterator it = data.begin();it !=data.end(); it++){
if(min>it->second){
key = it->first; //获取最小的key值
min = it->second; //获取最小的键值
}
}
// cout<<str[key]<<endl; //输出重复最多的数字
//输出
for(int i=0;i<str.size();i++){
if (data[str[i]] != min) //不是重复最小的值就输出
cout << str[i]<<endl;
}
}
int main(){
string str;
while(cin>>str){
manageStr(str);
}
return 0;
}