首页 > 其他 > 详细

leetcode-125 Valid Palindrome

时间:2016-01-27 21:27:30      阅读:189      评论:0      收藏:0      [点我收藏+]

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.

 

只考虑数字和字母,忽略大小写,求是否是回文。一开始我的思路很简单,用一个新string存翻转后的字符串再和原来的比较

class Solution {

public:
   bool isPalindrome(string s) {
        if (s.empty())
            return true;
        string newS;
        for (char c : s)
        {
            if (isAlphaNumeric(c))
            {
                if ((c >= a) && (c <= z))
                    c = c - 32;
    
                newS += c;
            }
        }
        string b = newS;
        reverse(newS.begin(), newS.end());
        if (newS == b)
            return true;
        else
            return false;
   }
    inline bool isAlphaNumeric(const char &c)
    {
        if ((c >= 0 && c <= 9) || ((c >= A) && (c<=Z)) || ((c>=a) && (c <= z)))
            return true;
        else
            return false;
    }

};

 觉得这样太慢了,就改用之前学到的两点法,一个从前往后,一个从后往前,不用再弄新数组。 

class Solution {
    //改用两点法
public:
    bool isPalindrome(string s) {
        if(s.empty())
            return true;
        int length = s.size();
        int i=0,j=length-1;
        while(i<j)
        {
            while(i<j && !isAlphaNumeric(s[i])) ++i;
            while(i<j && !isAlphaNumeric(s[j])) --j;
             

            if(i>=j) break;  
            if(s[i] != s[j])
                return false;
            
            ++i;
            --j;
        }
        return true;
    }
    inline bool isAlphaNumeric (char &c)
    {
        c = lowerCase(c);
         if ((c >= 0 && c <= 9) || ((c >= A) && (c<=Z)) || ((c>=a) && (c <= z)))
            return true;
        else 
            return false;
    }
    inline char lowerCase( char c) 
    {  
        if( c>=A && c<=Z) return c + a - A;  
        else return c;  
    } 

};

 

leetcode-125 Valid Palindrome

原文:http://www.cnblogs.com/tonychen-tobeTopCoder/p/5164421.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!