C语言——回文串判断

来源:互联网 发布:姗姗手帐小铺 淘宝 编辑:程序博客网 时间:2024/06/02 07:53

A  回文串的判断

Time Limit:1000MS  Memory Limit:65536K

题型: 编程题   语言: 无限制

描述

回文串是指一个字符串从左读到右与从右读到左是一样的,现由键盘输入一行字符(最多不超过80个字符,以回车结束),判断能否通过去掉0个或1个字符,使得字符串成为回文串,如果可以输出Y,否则输出N

输入格式

一行字符

输出格式

Y或N

输入样例

abca

输出样例

Y

Hint

提示,去掉c字符,即可成为回文串


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


int main()
{
char word[81], word1[81];//按题目要求控制数组长度,若数组过大时,需定义为全局变量
int i, loop = 1, count, k, len, j;
gets(word);//读入字符串
len = strlen(word);//测量长度
for(i = 0; i < len / 2; i++)//判断源串是否为回文串
{
if (word[i] != word[len - i - 1])//若有两个对应字符不相等
{
loop = 0;
break;
}
}
if (loop == 1)//若源串为回文串,则输出Y,程序结束
{
printf("Y\n");
return 0;
}
count = 0;
while(count != len)//依次遍历,每次删除一个字符,判断删除该字符后的字符串是否为回文串
{
loop = 1;
k = 0;
for(i = 0; i < len; i++)
{
if (count == i)//当为需删除的字符时,不判断
{
continue;
}
else
{
word1[k++] = word[i];
}
}
for(j = 0; j < k; j++)
{
if (word1[j] != word1[k -j - 1])
{
loop = 0;
break;
}
}
if (loop == 1)
{
printf("Y\n");
return 0;
}
count++;
}
printf("N\n");//若检查到最后发现无满足的情况,则输出N


return 0;
}

0 0