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.
思路:继续捏软柿子。。这题唯一要注意的是跳过非字母数字的字符的时候,别忘了同时满足边界条件。
- bool isPalindrome(string s) {
- if(s.empty()) return true;
- int start = 0, end = s.length() - 1;
- while(start < end){
- if(!isalnum(s[start])) {start++; continue;}
- if(!isalnum(s[end])) {end--; continue;}
- if(abs(s[start] - s[end]) != 0 && abs(s[start] - s[end]) != 32)
- return false;
- else{
- start++; end--;
- }
- }
- return true;
- }
No comments:
Post a Comment