zoukankan      html  css  js  c++  java
  • LeetCode: Valid Palindrome [125]

    【题目】

    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.


    【题意】

        给定一个字符串,仅仅关注英文字母和数字,忽略其它字符。问英文字母和数字按序排列后是否构成是回文


    【思路】

        利用回文串推断的老办法就可以,两个指针p1, p2分别从头和尾中间扫描,推断对称位置的字符是否同样,仅仅只是须要跳过除英文字母和数字之外的其它字符。
        另外还须要注意处理2中特殊情况:(1)字符串为空串,(2)字符串不是空串,但里面没有英文字母或者数字。 这两种情况都判定为true
        


    【代码】

    class Solution {
    public:
        bool isAlphanumeric(char c){
            if(isdigit(c))return true;
            if(c>='A'&&c<='Z'||c>='a'&&c<='z')return true;
            return false;
        }
        
        bool isEqual(char c, char b){
            if(isdigit(c))return c==b;
            if(c>='A'&&c<='Z')c='a'+(c-'A');
            if(b>='A'&&b<='Z')b='a'+(b-'A');
            return c==b;
        }
    
        bool isPalindrome(string s) {
            int len=s.length();
            if(len==0)return true;
            
            int front=0;
            int back=len-1;
            while(front<back){
                while(front<=back && !isAlphanumeric(s[front]))front++;
                while(front<=back && !isAlphanumeric(s[back]))back--;
                if(front<=back){
                    if(!isEqual(s[front], s[back]))return false;
                    front++;
                    back--;
                }
            }
            return true;
        }
    };


  • 相关阅读:
    cf C. Vasya and Robot
    zoj 3805 Machine
    cf B. Vasya and Public Transport
    cf D. Queue
    cf C. Find Maximum
    cf B. Two Heaps
    cf C. Jeff and Rounding
    cf B. Jeff and Periods
    cf A. Jeff and Digits
    I Think I Need a Houseboat
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4552310.html
Copyright © 2011-2022 走看看