美文网首页
125. Valid Palindrome

125. Valid Palindrome

作者: YellowLayne | 来源:发表于2017-06-20 17:38 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/vjlaqxtx.html