Palindromes(判断回文串)

简介: Palindromes(判断回文串)

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;
}
目录
相关文章
|
Python
Python函数isdigit()--判断字符串是否为数字
Python函数isdigit()--判断字符串是否为数字
231 0
|
3月前
|
Python
递归魔法:判断字符串是否为回文
本文介绍了如何使用递归判断一个字符串是否是回文。回文字符串是指正读和反读都相同的字符串。文章详细讲解了递归的基本思想和Python实现,并通过多个示例验证了函数的正确性。递归方法通过将大问题分解成更小的子问题,使得判断回文变得简单高效。
102 5
|
9月前
|
C++ 索引
c++:string相关的oj题(415. 字符串相加、125. 验证回文串、541. 反转字符串 II、557. 反转字符串中的单词 III)
c++:string相关的oj题(415. 字符串相加、125. 验证回文串、541. 反转字符串 II、557. 反转字符串中的单词 III)
78 0
|
8月前
字符串\判断回文
字符串\判断回文
38 2
|
算法
poj 1159 Palindrome(最长公共子串)
关于求最长公共子串, 用到的是动态规划
48 0
|
机器学习/深度学习
CF1304B Longest Palindrome(可逆转符号,数学分析,回文串)
CF1304B Longest Palindrome(可逆转符号,数学分析,回文串)
59 0
51nod 1292 字符串中的最大值 V2 (后缀数组)
51nod 1292 字符串中的最大值 V2 (后缀数组)
67 0
031.判断字符串是否回文
031.判断字符串是否回文
102 0
判断一个字符串是不是回文
判断一个字符串是不是回文
84 0