415. 有效回文串

描述

給定一個(gè)字符串,判斷其是否為一個(gè)回文串。只包含字母和數(shù)字,忽略大小寫。

注意事項(xiàng)

你是否考慮過,字符串有可能是空字符串?這是面試過程中,面試官常常會(huì)問的問題。在這個(gè)題目中,我們將空字符串判定為有效回文。

樣例

"A man, a plan, a canal: Panama" 是一個(gè)回文。
"race a car" 不是一個(gè)回文。

挑戰(zhàn)

O(n) 時(shí)間復(fù)雜度,且不占用額外空間。

思路

題目需要過濾掉除字母和數(shù)字外的字符,還要用Character.toLowerCase()進(jìn)行大小寫轉(zhuǎn)換

代碼

public class Solution {
    /*
     * @param s: A string
     * @return: Whether the string is a valid palindrome
     */
    public boolean isPalindrome(String s) {
        if (s == null || s.length() == 0) {
            return true;
        }
        
        int left = 0;
        int right = s.length() - 1;
        char[] string = s.toCharArray();
        while (left < right) {
            while (left < right && !isValue(string[left])) {
                left++;
            }
            while (left < right && !isValue(string[right])) {
                right--;
            }
            if (Character.toLowerCase(string[left]) != 
                Character.toLowerCase(string[right])) {
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
    
    private boolean isValue(char c) {
        return Character.isLetter(c) || Character.isDigit(c);
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容