Palindromes
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2949 Accepted Submission(s): 1723
Problem Description
Write a program to determine whether a word is a palindrome. A palindrome is a sequence of characters that is identical to the string when the characters are placed in reverse order. For example, the following strings are palindromes: “ABCCBA”, “A”, and “AMA”.
The following strings are not palindromes: “HELLO”, “ABAB” and “PPA”.
Input
The input file will consist of up to 100 lines, where each line contains at least 1 and at most 52 characters. Your program should stop processing the input when the input string equals “STOP”. You may assume that input file consists of exclusively uppercase
letters; no lowercase letters, punctuation marks, digits, or whitespace will be included within each word.
Output
A single line of output should be generated for each string. The line should include “#”, followed by the problem number, followed by a colon and a space, followed by the string “YES” or “NO”.
Sample Input
ABCCBA A HELLO ABAB AMA ABAB PPA STOP
Sample Output
#1: YES #2: YES #3: NO #4: NO #5: YES #6: NO #7: NO
我想shi的心都有了,那天考试连A三次都没过,思路也没啥问题啊!事后突然发现大写的O不知怎么的被写写成小写的了。哎,不然名次就上升好几名了
#include<stdio.h> #include<string.h> char a[60]; int main() { int t,len,i,j,m=1,b,c,d; while(scanf("%s",a)!=EOF) { if(!strcmp(a, "STOP")) break; printf("#%d: ",m++); b=c=d=0; len=strlen(a); if(len==1) {printf("YES\n");continue;} t=len/2; if(len%2==0) { for(i=0;i<t;i++) { if(a[i]==a[len-1-i]) b++; } if(b==t) printf("YES"); else printf("NO"); } else { for(i=0;i<=t;i++) { if(a[i]==a[len-1-i]) c++; } if(c-1==t) printf("YES"); else printf("NO"); } printf("\n"); } return 0; }
HDU 2163 Palindromes