题目:
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.
解答:首先进行处理成正常string的形式,然后用两个指针直接判断是不是palindrome即可
class Solution {
public:
bool isPalindrome(string s) {
if(s == "")
return 1;
int len = s.length();
string str = "";
for(int i = 0;i < len; ++i)
{
if(('a' <= s[i] && s[i] <= 'z') || ('0' <= s[i] && s[i] <= '9'))
str += s[i];
else if('A' <= s[i] && s[i] <= 'Z')
{
int t = s[i] - 'A';
char s = t + 'a';
str += s;
}
}
len = str.length();
if(len == 0)
return 1;
int lstart,rstart;
if(len % 2 == 0)
{
lstart = len / 2 - 1;
rstart = len / 2;
}
else
{
lstart = rstart = len / 2;
}
while(lstart >= 0)
{
if(str[lstart] != str[rstart])
return false;
lstart--;
rstart++;
}
return true;
}
};