思路:
-
isPalindrome
函数:- 使用两个指针
left
和right
分别指向字符串的开始和结束。 - 使用
isalnum
函数跳过非字母数字字符。 - 使用
tolower
函数将字符转换为小写进行比较。 - 如果在某一步比较中发现字符不相等,则返回
0
(false),否则继续向中间移动指针。 - 如果所有字符都符合回文条件,则返回
1
(true)。
- 使用两个指针
#include <ctype.h>
#include <string.h>int isPalindrome(char* s)
{int left = 0, right = strlen(s) - 1;while (left < right) {// 找到下一个字母数字字符while (left < right && !isalnum(s[left])) {left++;}while (left < right && !isalnum(s[right])) {right--;}// 将字符转换为小写并比较if (tolower(s[left]) != tolower(s[right])) {return 0; // 不是回文}left++;right--;}return 1; // 是回文
}