九度-题目1192:回文字符串
http://ac.jobdu.com/problem.php?pid=1192
- 题目描述:
-
给出一个长度不超过1000的字符串,判断它是不是回文(顺读,逆读均相同)的。
- 输入:
-
输入包括一行字符串,其长度不超过1000。
- 输出:
-
可能有多组测试数据,对于每组数据,如果是回文字符串则输出"Yes!”,否则输出"No!"。
- 样例输入:
-
hellolleh helloworld
- 样例输出:
-
Yes! No!
- 来源:
- 2007年华中科技大学计算机研究生机试真题
- 用两个字符数组,第一个数组保存前一半字符串内容;第二个数组保存后一半字符串的内容。
- 比较这两个字符数组是否相等。
-
#include <stdio.h> #include <string> #include <string.h> using namespace std; char str[1001]; int main() { char str1[501], str2[501]; while(scanf("%s", str)!=EOF) { memset(str1, 0, sizeof(str1)); memset(str2, 0, sizeof(str2)); int len=strlen(str); int half=len/2; int size=0; if(len%2==0){//如果是偶数 for(int i=0; i<half; i++) str1[i]=str[i]; for(int i=len-1; i>=half; i--) str2[size++]=str[i]; } else{//如果是奇数 for(int i=0; i<half; i++) str1[i]=str[i]; for(int i=len-1; i>half; i--) str2[size++]=str[i]; } if(strcmp(str1, str2)==0) printf("Yes!\n"); else printf("No!\n"); } return 0; }