2029 Palindromes_easy version

关键字: 代码分享 杭电100题

问题描述

Problem Description

“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。

Input

输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串。

Output

如果一个字符串是回文串,则输出"yes",否则输出"no".

Sample Input

4
level
abcde
noon
haha

Sample Output

yes
no
yes
no

问题分析

Problem Analyse

本题是为C语言初学者提供的。

Algorithm Analyse

得到字符串长度len

i从0循环到len / 2;

比较string[i] 与 string[len - i - 1] 是否相同;

算法实现

代码很容易实现:

#include <stdio.h>
#include <string.h>

int main(void)
{
  int n, len, i;
  char s[1024];
  
  scanf("%d%*c", &n);
  
  while (n--)
  {
    gets(s);
    len = strlen(s);
    for (i = 0; i <= len / 2; i++)
    {
      if (s[i] != s[len - 1 - i])
        break;
    }
    puts(s[i] != s[len - 1 - i] ? "no" : "yes");
  }
  
  return 0;
}

对于这题还有使用库函数strrev(),详见参考代码。

参考源码

redraiment使用Emacs Lisp批量迁移《HDU 2020-2029》