Palindromes(判断回文串)
描述
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”.
输入
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.
输出
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”.
输入样例 1
ABCCBA A HELLO ABAB AMA ABAB PPA STOP
输出样例 1
#1: YES #2: YES #3: NO #4: NO #5: YES #6: NO #7: NO
简单来说就是给你一串小于55个字符的字符串,要你判断是否为回文串(“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串)。
要AC这道题主要分三步走:
1、获取输入数据,并判断是否为“STOP”
while(scanf("%s",str)&&strcmp(str,"STOP")!=0)
2、判断是否回文串,只需遍历一下字符串,比较一下头尾对应位置的字符是否相同,如果有一个不相同则不为回文串。
//判断是否为回文串的函数 int isPalindrome(char str[55]){ int len = strlen(str)-1; int i; for(i=0;i<=(len+1)/2;i++) { if(str[i] != str[len-i]){ return 0; } } return 1; } //调用函数: if(isPalindrome(str)==1) printf("YES\n"); else printf("NO\n");
3、注意格式化输出:
cases++; printf("#%d: ",cases); if(isPalindrome(str)==1) printf("YES\n"); else printf("NO\n");
完整代码如下:
#include<stdio.h> #include<string.h> int isPalindrome(char str[55]){ int len = strlen(str)-1; int i; for(i=0;i<=(len+1)/2;i++) { if(str[i] != str[len-i]){ return 0; } } return 1; } int main() { char str[55]; int cases = 0; while(scanf("%s",str)&&strcmp(str,"STOP")!=0){ cases++; printf("#%d: ",cases); if(isPalindrome(str)==1) printf("YES\n"); else printf("NO\n"); } return 0; }