标签:string
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.
#include<iostream> #include<vector> #include<string> #include<algorithm> using namespace std; bool isValid(char c){ if(c >= 'a' && c <= 'z') return true; if(c >= '0' && c <= '9') return true; return false; } bool isPalindrome(string s) { if (s.empty()) return true; transform(s.begin(), s.end(), s.begin(), ::tolower); int first = 0; int last = s.size()-1; while (first<=last) { while (!isValid(s[first])){ ++first; if (first>=last) return true; } while (!isValid(s[last])){ --last; if (first>=last) return true; } if (s[first]==s[last]){ ++first; --last; } else return false; } return true; }
标签:string
原文地址:http://blog.csdn.net/li_chihang/article/details/44775803