我想检查一个字符串是否是回文

I want to check whether a string is palindrome

char s[100];
//char t[100];
int count = 1;
int j=0;
int x,i;
cin >>s;
x=strlen(s);
//cout <<x <<endl;
cout <<s[j] <<endl;
i=x-1;
cout <<s[i] <<endl;
for (int i = x-1; i <= 0; i--)
{
    if (s[j] != s[i])
    {
        count = 0;
    }
    j++;

}
if ( count  )
{
    cout <<"YES";
}
else
{
    cout <<"NO";
}
return 0;

我想知道给定的字符串是否是回文。这段代码有什么问题?如果正在输入回文,我希望它打印 YES,如果字符串不是回文,则打印 NO。但它总是打印 YES。没有错误。

您的代码永远不会输入 for loop,因为条件 i = x-1 and i <=0 不会很好 assuming your string is not empty,那么就不需要保留计数变量,因为一旦字符串不匹配你可以打印 NO 并退出代码。

您可以像这样实现它:

#include <iostream>

using namespace std;

int main() {
    char s[100];
    int x,i,j=0;
    cin >>s;
    x=strlen(s);
    i = x-1;
    cout <<s[0] <<endl;
    cout <<s[i] <<endl;
    for (int i = x-1; i >= 0; i--)
    {
        if (s[j] != s[i])
        {
            cout <<"NO";
            return 0;
        }
        j ++;
    }
    cout <<"YES";
    return 0;
}