回文串有一个特性:
- 长度为奇数:中间是单个的,其他成对向外扩散。(只有一个字母为奇数个)
- 长度为偶数:成对向外扩散。
所以要尽量两两凑成一样的。令 a n s ans ans 数组为最终答案要用到的字符。
统计在原字符串中每个字母出现的个数,每出现两个一样的直接加到 a n s ans ans 里;其他不一样的,需要改变某一些字母使得他们和其他字母能保持一致,再加入 a n s ans ans .
又因为要字典序最小,所以 a n s ans ans 需要在处理一下,最终输出 a n s 2 ans2 ans2 .
#includeusing namespace std; string s; int ct=0; int cnt[27]; char ans[200005]; char ans2[200005]; int main() { cin>>s; for(int i=0;i



