这个是个比较简单的题目,是在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