这个是个比较简单的题目,是在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的。具体原因。。。。
本文出自 “我的算法笔记” 博客,谢绝转载!
原文:http://liu168ad.blog.51cto.com/7511123/1392868