题目:验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: “A man, a plan, a canal: Panama”
输出: true
示例 2:
输入: “race a car”
输出: false
C语言解题
bool isPalindrome(char* s) {
int len = strlen(s);
int lenNew = 0;
if (len == 0)
return true;
for (int i = 0; i < len; i++)
{
if ('A' <= s[i] && s[i] <= 'Z')
{
s[lenNew] = s[i] + 'a' - 'A';
lenNew++;
}
else if ('a' <= s[i] && s[i] <= 'z' || '0' <= s[i] && s[i] <= '9')
{
s[lenNew] = s[i];
lenNew++;
}
}
printf("%d\n", lenNew);
for (int i = 0; i < lenNew/2; i++)
{
if (s[i] != s[lenNew - i - 1])
return false;
}
return true;
}
先遍历,将大写字母转为小写字母后,连同小写字母和数字加入新字符串,然后遍历比较新的字符串首尾字符。