#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
typedef map<char,int> fMap;
//从原始数据中,获取包含字母出现次数的map
int getMap(vector<char> cVec, fMap &mapList)
{
vector<char>::const_iterator cIter = cVec.begin();
for (cIter; cIter != cVec.end(); ++cIter) {
mapList[*cIter]++;
}
return 0;
}
//从map中获取出现次数最多的字符
int getMaxChar(vector<char> &getMaxCharVec, fMap &mapList)
{
fMap::iterator mIter = mapList.begin();
fMap::iterator tmpIter = mapList.begin();
while (mIter != mapList.end()) {
if (tmpIter->second >= mIter->second) {
++mIter;
} else {
tmpIter = mIter;
++mIter;
}
}
for (mIter = mapList.begin(); mIter != mapList.end(); ++mIter) {
if (tmpIter->second == mIter->second) {
getMaxCharVec.push_back(mIter->first);
}
}
return 0;
}
//获取需要打印的字符串
int deleteMaxChar(vector<char>&cVec, vector<char> getMaxCharVec, vector<char>&outVec)
{
vector<char>::const_iterator tIter = cVec.begin();
for (tIter; tIter != cVec.end(); ++tIter) {
bool pd = true;
vector<char>::const_iterator maxIter = getMaxCharVec.begin();
for (maxIter; maxIter != getMaxCharVec.end(); ++maxIter){
if (*tIter == *maxIter) {
pd = false;
break;
}
}
if (pd) {
outVec.push_back(*tIter);
}
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
string s1;
vector<char> cVec,getMaxCharVec,outVec;
fMap mapList;
cin>>s1;
if(s1.size() > 20){
cout<<"The length of input string is too long!"<<endl;
return -1;
}
std::string::const_iterator sIter = s1.begin();
for (sIter; sIter != s1.end(); ++sIter) {
cVec.push_back(*sIter);
}
getMap(cVec,mapList);
getMaxChar(getMaxCharVec,mapList);
deleteMaxChar(cVec,getMaxCharVec,outVec);
cout<<"The process finished is:";
vector<char>::const_iterator iterB = outVec.begin();
for (iterB; iterB != outVec.end(); ++iterB){
cout<<*iterB;
}
cout<<endl;
return 0;
}
C++,输入字符串,删除重复次数最多的字符
最新推荐文章于 2022-11-03 23:41:57 发布