美文网首页
LeetCode 125. Valid Palindrome

LeetCode 125. Valid Palindrome

作者: cb_guo | 来源:发表于2019-04-09 19:12 被阅读0次

    题目描述

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

    Note: For the purpose of this problem, we define empty string as valid palindrome.

    Example 1:

    Input: "A man, a plan, a canal: Panama"
    Output: true
    

    Example 2:

    Input: "race a car"
    Output: false
    

    题目思路

    • 思路一、按照题目的意思,定义两个指针 ( 从后往前,从前往后 ),碰到非大小写字母或数字则忽略
    class Solution {
    public:
        bool isPalindrome(string s) {
            int i = 0;
            int j = s.size() - 1;
            
            while( i < j ){
                while(i < j && ! fab(s[i])) i += 1;
                    
                while(i < j && ! fab(s[j])) j -= 1;
                
                if(core(s[i], s[j])){
                    i += 1;
                    j -= 1;
                }
                else{
                    return false;
                }
            }
            return true;
        }
        
        bool fab(char c){
            if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') ){
                return true;
            }
            return false;
        }
        
        bool core(char a, char b){
            if(a == b) return true;
            // a 小写字母
            if(a >= 'a' && a <= 'z'){
                if(a -32 == b){
                    return true;
                }
            }
            
            // a 大写字母
            if(a >= 'A' && a <= 'Z'){
                if(a +32 == b){
                    return true;
                }
            }
            return false;
        }
    };
    

    总结展望

    相关文章

      网友评论

          本文标题:LeetCode 125. Valid Palindrome

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