- 给定一行字符串,求出这行字符串中出现频率最高的字符,字符串中含有标点符号,字符不区分大小写。如果出现频率相同时,输出先出现在字符串中的字符。
#include<iostream>
#include<set>
#include<map>
#include<string>
#include<algorithm>
using namespace std;
set<char> s;
map<char,int> index;
struct node{
char c;
int y;
};
int cmp(const node &a,const node &b)
{
if(a.y==b.y)
{
return index[a.c]<index[b.c]?1:0;
}
else
{
return a.y>b.y?1:0;
}
}
int main()
{
string str;
getline(cin,str);
//去掉空格
int len=str.size();
int i;
for(i=0;i<len;i++)
{
if(str[i]==' ')
{
str=str.substr(0,i)+str.substr(i+1);
i--;
}
}
//转换为大写字符
transform(str.begin(),str.end(),str.begin(),::toupper);
cout<<str<<endl;
//map存储每个字符的个数
map<char,int> arr;
len=str.size();
for(i=0;i<len;i++)
{
arr[str[i]]++;
//存储字符第一次出现的下标
if(s.find(str[i])==s.end