125. Valid Palindrome

1.描述

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.

2.分析

3.代码

bool check(char ch) {
    return ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z' || ch >= '0' && ch <= '9' ? true : false;
}

bool isPalindrome(char* s) {
    if (NULL == s) return false;
    if ("" == s) return true;
    int length = strlen(s);
    int begin = 0;
    int end = length - 1;
    while (begin < end) {
        while (!check(s[begin]) && begin <= end) ++begin;
        while (!check(s[end]) && begin <= end) --end;
        if (begin > end) return true;
        char ch1 = isupper(s[begin]) ? s[begin] : s[begin] - 32;
        char ch2 = isupper(s[end]) ? s[end] : s[end] - 32;
        if (ch1 != ch2) return false;
        ++begin;
        --end;
    }
    return true;
}

你可能感兴趣的:(125. Valid Palindrome)