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

时间:2017-08-23 13:00:10

标签: c++11 for-loop if-statement 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。没有错误。

1 个答案:

答案 0 :(得分:0)

您的代码永远不会输入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;
}