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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容