首页 > 代码库 > [LeetCode] Valid Palindrome

[LeetCode] Valid Palindrome

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.

 

思路:最一般的遍历+比较。注意题目要求和字母大小写问题。

   时间复杂度O(n),空间复杂度O(1)

 1 class Solution { 2 public: 3     bool isPalindrome(string s) { 4         if (s.empty()) return true; 5          6         vector<char> cvec; 7         for (string::size_type i = 0, j = s.size() - 1; i < j;) { 8             if (!isalnum(s[i])) { 9                 ++i;10                 continue;11             }12             if (!isalnum(s[j])) {13                 --j;14                 continue;15             }16             if (isdigit(s[i]) && s[i] != s[j]) {17                 return false;18             }19             if (isalpha(s[i]) && (toupper(s[i]) != toupper(s[j]))) {20                 return false;21             }22             ++i;23             --j;24         }25     26         27         return true;28     }29 };

 

[LeetCode] Valid Palindrome