码迷,mamicode.com
首页 > 其他好文 > 详细

判断回文串

时间:2019-10-01 14:08:30      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:表情   href   代码   poi   需要   strong   ==   code   ble   

问题描述

输入一串字符串,判断是否是回文串。
输入

一行字符串,长度不超过255。

输出

如果是回文串,输出“YES”,否则输出“NO”。

eg:

输入:

12321

输出:

YES

思路

回文串就是正着反着读都一样,所有只需要遍历下字符串的前一半,看和后一半对应位置的字符是不是都一样。如果出现不一样的,就不是回文串。
如果前一半的所有字符 str[i] 都和后一半对应位置的字符 str[length - 1 - i] 相等,那就是回文串了、

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
#include <string.h>
int judge(char str[])
{
int length = strlen(str), i;
for(i = 0; i < length/2; i++)
{
if(str[i] != str[length - 1 - i])
{
return 0;
}
}
return 1;
}
int main()
{
char str[256];
while(gets(str))
{
int answer = judge(str);
if(answer == 1)
{
printf("YESn");
}
else{
printf("NOn");
}
}
return 0;
}

point

  • 一开始想着遍历所有字符,再反着遍历一遍,两遍的结果作比较。最后发现有点蠢。

  • 一个愚蠢的错误:其实 version1 的代码是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string.h>
int main()
{
char str[256];
gets(str);
int length = strlen(str), i;
for(i = 0; i < length/2; i++)
{
if(str[i] != str[length - 1 -i])
{
printf("NOn");
}
else
{
printf("YESn");
}
}
return 0;
}

于是输入一个 “123421”,输出就成了:

技术图片

此处有一个扶额哭的表情……..

原文:大专栏  判断回文串


判断回文串

标签:表情   href   代码   poi   需要   strong   ==   code   ble   

原文地址:https://www.cnblogs.com/petewell/p/11615052.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!