思路

这道题我见到以后的第一想法就是反转字符串,如果反转之后的字符串和原先的字符串相等,那么就是回文。

其实这就变成了之前的另外一道题“反转字符串”。

当时这道题的解法是这样的:

char* solve(char* str ) {
    // write code here
    char temp;
    int i = 0;
    int n = strlen(str);
    for (i = 0; i < n/2; i++)
    {
        temp = str[i];
        str[i] = str[n - i - 1];
        str[n - i - 1] = temp;
    }
    return str;
}

观察了这段代码,我发现其实用不着反转字符串,只需要一次比较成对出现的字符是否相等就可以了。

也就是说比较str[i]和str[n - i - 1]是不是相等就可以了。

于是我的代码变成了这样:

int judge(char* str ) {
    // write code here
    int n = strlen(str);
    int i = 0;
    for (i = 0; i < n/2; i++)
    {
        if (str[i] != str[n - i -1])
        {
            return false;
        }
    }
    return true;
}