思路:
-
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; // 是回文
}