7-1 回文判断 (35分)
回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。编写一个程序,使用栈判定给定的字符序列是否为回文。
输入格式:
输入待判断的字符序列,按回车键结束,字符序列长度<20。
输出格式:
若字符序列是回文,输出“YES”;否则,输出“NO”。
输入样例:
abdba
输出样例:
YES
思路:只需要让前半部分与后半部分进行比较即可,但是注意要分奇数和偶数个字符,当为奇数时中间的不参与比较。具体代码如下所示:
#include <stdio.h>
#include <string.h>
int main()
{
char c[50];
int i=0, n=0, flag = 0;
gets(c);
int count=strlen(c);
n=count-1;
if (count % 2 == 0)
{
for (i = 0; i <= n / 2; i++)
{
if (c[i] != c[n - i])
flag = 1;
}
}
else
{
for (i = 0; i <= (n - 1) / 2; i++)
{
if (c[i] != c[n - i])
flag = 1;
}
}
if (flag)
printf("NO");
else
printf("YES");
return 0;
}