首先,我们了解一下,什么是回文字符串呢?所谓回文字符串,就是讲一个字符串反过来读也一样。那么,我们怎么判断一个字符串是不是回文字符串呢?例如,xyzmzyx,这就是一个回文字符串,我们很明显可以看到这个字符串是以m对称的,因此我们就有一种思路,我们将这个字符串的最左边一个字符,和最右边一个字符相比较,依次这样一对一对比较下去。如果全部相同,那么久返回1,否则,只要有1次不同,就返回0。那么函数什么时候停止呢?我们可以想一下,当字符串个数为偶数时,刚好全部两两配对,这个时候最后一次,左边的字符下标下余右边。同理,当为奇数时,中间会剩下一个不判断,这个时候也是,左边字符<右边字符。
下面我们看看代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int is_palindrom(char*str)
{
int len=strlen(str);
int left = 0;
int right = len-1;
while(left<right)
{
if(*(str+left)!=*(str+right))
return 0;
left++;
right--;
}
return 1;
}
int main()
{
char arr[100]="xyzmzyx";
gets(arr);
int ret = is_palindrom(arr);
if(ret==1)
printf("YES\n");
else
printf("NO\n");
return 0;
}