E被卡两个点求调!!!

#include<bits/stdc++.h>

using namespace std;

string s;

int n;

int a[60];

char yuan='a';

priority_queue<pair<int,char> > q;

char x[214514];

int main()

{

cin>>s;

n=s.size();

for(int i=0;i<n;i++)

{

a[s[i]-'a']++;

}

for(int i=0;i<26;i++)

{

//cout<<a[i]<<' ';

if(a[i]>n/2)

{

cout<<-1;

return 0;

}

q.push(make_pair(a[i],yuan));

yuan++;

}

//cout<<'\n';

for(int i=0;i<n;i++)

{

char op=q.top().second;

q.pop();

if(op!=s[i])

{

x[i]=op;

a[op-'a']--;

q.push(make_pair(a[op-'a'],op));

}

else

{

char gen=op;

op=q.top().second;

q.pop();

x[i]=op;

a[op-'a']--;

q.push(make_pair(a[op-'a'],op));

q.push(make_pair(a[gen-'a'],gen));

}

}

for(int i=0;i<n;i++)

cout<<x[i];

return 0;

}

全部评论
cccccbbbbbaaaaa 试一下这组样例
1 回复 分享
发布于 10-20 23:27 天津

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务