题目描述:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: “A man, a plan, a canal: Panama”
输出: true
示例 2:
输入: “race a car”
输出: false
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-palindrome
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解答:
bool isPalindrome(char * s)
{
if(strlen(s) <= 1)
{
return true;
}
char *pTail = NULL;
char *pFirst = NULL;
char *res = (char*)malloc(sizeof(char) * strlen(s));
int len = strlen(s);
int i = 0;
int count = 0;
memset(res,0,strlen(s));
for(i = 0;i < len;i++)
{
if((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z') || (s[i] >= '0' && s[i] <= '9'))
{
if((s[i] >= 'A' && s[i] <= 'Z'))
{
res[count] = s[i] + 32;
}
else
{
res[count] = s[i];
}
count++;
}
}
for(i = 0;i < count/2;i++)
{
if(res[i] != res[count - i - 1])
{
free(res);
return false;
}
}
free(res);
return true;
}
运行结果: