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<iostream> #include<cctype> #include<string> using namespace std; class Solution { public: bool isPalindrome(string s) { int i=0; int j=s.length()-1; while(i<=j) { if(isalnum(s[i])&&isalnum(s[j])) { if(isalpha(s[i])) s[i]=tolower(s[i]); if(isalpha(s[j])) s[j]=tolower(s[j]); if(s[i]==s[j]) { i++; j--; } else break; } else if(isalnum(s[i])) { j--; } else if(isalnum(s[j])) { i++; } else { i++; j--; } } if(i>j) return true; else return false; } }; int main() { string s="A man, a plan, a canal: Panama"; Solution ss; if(ss.isPalindrome(s)) cout<<" s is a palindrome."<<endl; else cout<<" s is not a palindrome."<<endl; }
运行结果:
原文:http://www.cnblogs.com/wuchanming/p/4095302.html