标签:
题目:
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.
C++ 实现:
#include <string>
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
bool isPalindrome(string s) {
int length = s.length();
if(length == 0 || length == 1)return true;
int i = 0,j = length - 1;
while(i <= j){
char prev = s[i];
char last = s[j];
bool p = isalpha(prev) || isdigit(prev);
bool l = isalpha(last) || isdigit(last);
if( p && l){
if(tolower(prev) == tolower(last)){
++i;
--j;
continue;
}else{
return false;
}
}
else if(p)--j;
else if(l)++i;
else{--j;++i;}
}
return true;
}
};
int main()
{
Solution s = Solution();
cout << s.isPalindrome("1a2") << endl;
return 1;
}
标签:
原文地址:http://www.cnblogs.com/zhutianpeng/p/4250851.html