这个题目只要注意大小写问题即可解决,而且我们只关注的是字母和数值
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.
class Solution { public: bool isPalindrome(string s) { int start = 0, end = s.size() - 1; while (start < end) { if ('a' <= s[start] && s[start] <= 'z' || 'A' <= s[start] && s[start] <= 'Z' || '0' <= s[start] && s[start] <= '9') { bool tag = true; while (tag) { if ('a' <= s[end] && s[end] <= 'z' || 'A' <= s[end] && s[end] <= 'Z' || '0' <= s[end] && s[end] <= '9') { if (s[start] == s[end]||s[start]==toupper(s[end])||s[start]==tolower(s[end])) { ++start; --end; tag = false; } else { return false; } } else { --end; tag = true; } } } else ++start; } return true; } };