*回文列

3796 ワード

1005:明ちゃん愛文字列Time Limit:1 Sec Memory Limit:128 MB 64 bit IO Format:%lld Submitted:512 Accepted:109[Submit][Status][Web Board]Description
明ちゃんは回文列が好きで、文字列を与えて、明ちゃんはその中の任意の2つの文字の位置を交換したり、その中の1つの文字を変えたりすることができて、明ちゃんに回文列を得ることができるかどうかを聞いたりすることができます.
Input
複数のテストのグループは、1行1文字列で、すべて小文字で、100000を超えないことを保証します.
Output
文字列が得られる場合、出力666、そうでない場合、TNTが出力される.
Sample Input
abc acbac aabc
Sample Output
666 666 TNT
#include 
#include 
char s[100010];
int main()
{
    while(gets(s)!=NULL)
    {
        int len=strlen(s);
        int i,j,cnt=0;
        int a[8],k=0;
        for(i=0,j=len-1;i<=j;i++,j--)
        {
            if(s[i]!=s[j])
            {
                a[k++]=i;// 
               cnt++;
            }

            if(cnt>2)// 
            {
                printf("TNT
"
); break; } } // printf("----%d %d--------%d
",a[0],a[1],cnt);
if(cnt<=1) printf("666
"
); else if(cnt==2) { int ss=0; int str[30]={0}; str[s[a[1]]-'a']++; str[s[a[0]]-'a']++; str[s[len-1-a[1]]-'a']++; str[s[len-1-a[0]]-'a']++; for(int p=0;p<30;p++) if(str[p]) ss++; if(ss==2)// , :accbba,acbcba printf("666
"
); else printf("TNT
"
); } } return 0; }