Thursday, September 25, 2014

[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.

Analysis:

class Solution {
public:

    bool isAlphanumeric(char c)
    {
        if ((c >= 'a' && c <='z') ||
            (c >= 'A' && c <= 'Z') ||
            (c >= '0' && c <= '9'))
            return true;
        return false;
    }

    bool isPalindrome(string s) {
        int i=0;
        int j = s.size() - 1;
        while(i < j)
        {
            if (!isAlphanumeric(s[i]))
            {
                i++;
                continue;
            }

            if (!isAlphanumeric(s[j]))
            {
                j--;
                continue;
            }

            if (toupper(s[i]) != toupper(s[j]))
                return false;
            
            i++;
            j--;
        }
        
        return true;
    }
};

No comments:

Post a Comment