思路
这道题我见到以后的第一想法就是反转字符串,如果反转之后的字符串和原先的字符串相等,那么就是回文。
其实这就变成了之前的另外一道题“反转字符串”。
当时这道题的解法是这样的:
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; }