这个是个比较简单的题目,是在nyist上面的。

然后看了一下别人的代码,感觉思路挺特别的,最近用stl习惯了,已经不习惯去写代码了,不过还是要常常写一下底层代码吧,不然就会对语言越来越不熟悉了。

别人的代码:

#include <cstdio>
#include <cstring>
const int N = 10001;
char ch[N];
int main()
{
    int i,j;
    while(~scanf("%s",ch))
    {
        int a[26] = {0} , sum = 0;
        int len = strlen(ch);
        for(i = 0;i < len;i++)
            a[ch[i]-'a']++;
        for(i = 0;i < 26;i++)
            if(a[i]&1)
                sum++;
        if(sum == 1 || sum == 2 || sum == 0)
            puts("Yes");
        else if(sum&1)
            puts("No");
        else
            puts("Yes");
    }
}

贴一下自己用stl写的代码吧!

#include <iostream>
#include <string>
#include <string.h>
#include <algorithm>
#include <stdio.h>
using namespace std;
char s1[1000];
int main()
{
    memset(s1,0,sizeof(s1));
    while(gets(s1)!="\0")
    {
        string a1,a2;
        a1 = s1;
        a2 = s1;
        if(a1.compare("2013") == 0)
            break;
        reverse(a2.begin(),a2.end());
        if(a1 == a2)
            cout << "Yes" <<endl;
        else
            cout << "No" <<endl;
        a1.erase();
        a2.erase();
    }
    return 0;
}

但是都是tle的。具体原因。。。。