美麗的迴文

Problem Description

從前,有一個字符串,它超級羨慕迴文串的美麗, 於是他拼盡全力想把自己變成迴文串的模樣.

但是,現實總是殘酷的,有些字符串無論如何也變不成迴文串

現在請問:該字符串能否通過重新排列來構成迴文串?如果能,輸出 YES,否則輸出NO

Input

一個字符串,長度 1 <= len <= 10000,保證字符串只由小寫字母(a~z)來構成.

Output

如果該字符串能通過重新排列後能達到迴文串,輸出YES,否則輸出NO

Sample Input

zlylz

Sample Output

YES

Hint
迴文串”是一個正讀和反讀都一樣的字符串,比如“level”或者“noon”等等就是迴文串。

對於輸入:aabbcd

正確的輸出是:NO

對於輸入:aabbc

正確的輸出是:YES

#include <bits/stdc++.h>
using namespace std;
struct node
{
    int ci;
    char zi;
};
char a[100050];
int main()
{
    while(cin>>a)
    {
        node n[100050];
        n[0].zi=a[0];
        n[0].ci=1;
        int k=1;
        int len=strlen(a);
        for(int i=1; i<len; i++)
        {
            int flag=0;
            for(int j=0; j<k; j++)
            {
                if(n[j].zi==a[i])
                {
                    n[j].ci++;
                    flag=1;
                }
            }
            if(flag==0)
            {
                n[k].zi=a[i];
                n[k].ci=1;
                k++;
            }
        }
       
        if(len%2==0)
        {
            int t=0;
            for(int i=0; i<k; i++)
            {
                if(n[i].ci%2!=0)
                {
                    t=1;
                    break;
                }
            }
            if(t==0)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
        else
        {
            int t=0;
            for(int i=0; i<k; i++)
            {
                if(n[i].ci%2==1)
                    t++;
            }
            if(t==1)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
    }
    return 0;
}
發佈了58 篇原創文章 · 獲贊 9 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章