题目描述
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
"A man, a plan, a canal: Panama"is a palindrome.
"race a car"is not a palindrome.
Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.
For the purpose of this problem, we define empty string as valid palindrome.
说明:
1)注意两点:a、判断满足条件的字符 b、大写变小写(本题认为不区分大小写)
2)字符串为空则true
实现代码: class Solution {
public:
bool isPalindrome(string s) {
if(s.empty()) return true;
int len=strlen(s.c_str());
int j=0;
for (int i=0;i<len;i++)
{
if (isChar(s[i]))//去其他符合,若有大写则大写变小写
{
s[i] = tolower(s[i]);//库函数
s[j++]=s[i];
}
}
s[j]='\0';
if (s[0]=='\0') return true;
//再次计算新构成字符串的长度;
int len2=strlen(s.c_str());
int k=0;
//while(k<=len2-1-k) //判断是否回文,对称检验;
for(;k<len2/2;k++)
{
if(s[k]!=s[len2-1-k]) return false;
//k++;
}
return true;
}
bool isChar(char t)//判断是否满足条件字符
{
if ((t >= 'a' && t <= 'z')||(t >= 'A' && t<='Z')||(t >= '0'&& t <= '9'))
{
return true;
}
else
return false;
}
};