leetcode125. Valid Palindrome

easy程度題

題目:

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.

此題要注意細節,只比較同時是字母或數字的字符

AC解:

class Solution {
public:
    bool isPalindrome(string s) 
    {
        if (s.empty())
            return true;
            
        int front = 0,back = s.length() - 1;
        while (front < back)
        {
            while (!isalnum(s[front]) && front < s.length())//跳過特殊字符
                front++;
            if (front == s.length())//全爲特殊字符,字符串爲迴文
                break;
                
            while (!isalnum(s[back]))//跳過特殊字符
                back--;
                
            if (isalpha(s[front]) && isalpha(s[back]))//都是字符
            {
                if (tolower(s[front]) != tolower(s[back]))
                    return false;
            }
            else
            {
                if (s[front] != s[back])
                    return false;
            }
            front++;
            back--;
        }
        
        return true;
    }
};



發佈了66 篇原創文章 · 獲贊 21 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章