LeetCode_ValidPalindrome

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) 
     {
        if (s == "")
            return true;
        int len = s.length();
        int size = len >> 1;
        int left = 0;
        int right = len - 1;
        while (left < right)
        {
            while ((left <= right) && !isalnum(s[left]))
            {
                ++left;
            }
            while ((right >= left) && !isalnum(s[right]))
            {
                --right;
            }
            if (left >= right)
                break;
                    
            if (isdigit(s[left]) && isdigit(s[right]))
            {
                if (s[left] != s[right])
                    return false;
                else
                {
                    ++left;
                    --right;
                }
            }
            else if (isalpha(s[left]) && isalpha(s[right]))
            {
                if (tolower(s[left]) == tolower(s[right]))
                {
                    ++left;
                    --right;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
            
        return true;
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章