标签:
题目:
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