这个代码怎么输出不了yes?看下哪错了

任务描述:对于给定的字符串,判断是否为回文串。所谓的回文串是指顺着读和反着读都一样的文本。例如,“雾锁山头山锁雾”、“天连碧水碧连天”、“abcdedcba”等。要求编写一个非递归函数实现判断给定的字符串是否为回文串的功能,主调函数中实现字符串的输入和判断结果的输出。
输入:给定的字符串仅包含英文字符,字符串的长度不超过100,串中字符为大写或小写字母。
输出:如果是回文串则输出YES,否则输出NO。
输入举例:
level
输出举例:
YES

程序代码:#include <stdio.h>
#include <string.h>
int panduan(char str[])
{
int i=0,j;
int len=strlen(str);
j=len-1;
while(i<len/2)
{
if(str[i]==str[j])
{
i++;
j--;
}
else if(str[i]!=str[j])
{
printf("NO");
break;
}
else if(str[i+1]==str[j]&&str[i+2]==str[j])
{
printf("YES");
}
}
}
int main()
{
char str[100];
gets(str);
panduan(str);
return 0;
}

代码修改如下:

#include <stdio.h>
#include <string.h>
int panduan(char str[])
{
    int i=0,j;
    int len=strlen(str);
    j=len-1;
    while(i<j) //i<len/2
    {
        if(str[i]==str[j])
        {
            i++;
            j--;
        }
        else //if(str[i]!=str[j])
        {
            printf("NO");
            return 0;
        }
    }
    printf("YES");
    return 1;
}
int main()
{
    char str[100];
    gets(str);
    panduan(str);
    return 0;
}