zoukankan      html  css  js  c++  java
  • 【Codeforces 600C】Make Palindrome

    【链接】 我是链接,点我呀:)
    【题意】

    题意

    【题解】

    计算出来每个字母出现的次数。 把字典序大的奇数出现次数的字母换成字典序小的奇数出现次数的字母贪心即可。 注意只有一个字母的情况 然后贪心地把字典序小的字母放在前面就好

    【代码】

    #include <bits/stdc++.h>
    #define rep1(i,a,b) for (int i = a;i <= b;i++)
    #define rep2(i,a,b) for (int i = a;i >= b;i--)
    #define ll long long
    using namespace std;
    
    const int N = 2e5;
    
    string s;
    char ans[N+10];
    int cnt[30];
    
    int main(){
        ios::sync_with_stdio(0),cin.tie(0);
        cin >> s;
        rep1(i,0,(int)s.size()-1) cnt[s[i]-'a'+1]++;
        for (int i = 1;i <= 26;i++)
            if (cnt[i]&1){
                for (int j = 26;j >= i+1;j--)
                    if (cnt[j]&1){
                        cnt[i]++;
                        cnt[j]--;
                        break;
                    }
            }
        rep1(i,1,(int)s.size()/2){
            for (int j = 1;j <= 26;j++){
                if ( (cnt[j]>0 && cnt[j]%2==0) || (cnt[j]>2) ){
                    ans[i] = (char)(j+'a'-1);
                    ans[(int)s.size()-i+1] = ans[i];
                    cnt[j]-=2;
                    break;
                }
            }
        }
        if ((int)s.size()%2==1){
            for (int j = 1;j <= 26;j++)
                if (cnt[j]%2==1)
                    ans[(int)s.size()/2+1] = (char)(j+'a'-1);
        }
        for (int i = 1;i <= (int)s.size();i++){
            cout<<ans[i];
        }
    	return 0;
    }
    
  • 相关阅读:
    css选择器
    《大巧不工》读书笔记
    《现代软件工程》实验二
    github使用心的
    ADO.NET之注入式攻击
    ADO.Net之SqlConnection、 Sqlcommand的应用(读书笔记1)
    实现划桨板块的自动轮播
    js基础
    JQuery的一些方法
    css兼容问题
  • 原文地址:https://www.cnblogs.com/AWCXV/p/10651384.html
Copyright © 2011-2022 走看看