判断字符串是否是回文的方法可以使用双指针的思想,一个指针指向字符串的开头,一个指针指向字符串的末尾,然后逐步比较两个指针指向的字符是否相同,直到两个指针相遇或者找到不相同的字符。
下面是一个示例代码:
#include <stdio.h>
#include <string.h>
int isPalindrome(char* str) {
int len = strlen(str);
int start = 0;
int end = len - 1;
while (start < end) {
if (str[start] != str[end]) {
return 0; // 不是回文
}
start++;
end--;
}
return 1; // 是回文
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
if (isPalindrome(str)) {
printf("是回文\n");
} else {
printf("不是回文\n");
}
return 0;
}
这段代码首先通过strlen
函数获取字符串的长度,然后使用两个指针start
和end
分别指向字符串的开头和末尾。在一个while
循环中,不断比较指针指向的字符是否相同,如果发现不同的字符,则返回0表示不是回文;如果两个指针相遇,则表示整个字符串都比较完毕,返回1表示是回文。最后在main
函数中调用isPalindrome
函数进行判断,并输出结果。