高頻算法面試題(字符串) leetcode 125. 驗證迴文串

leetcode 125. 驗證迴文串

給定一個字符串,驗證它是不是迴文串,只考慮字母和數字字符,能夠忽略字母的大小寫。 說明:本題中,咱們將空字符串定義爲有效的迴文串。 示例 1:面試

輸入: "A man, a plan, a canal: Panama"
輸出: true
複製代碼
輸入: "race a car"
輸出: false
複製代碼

讓咱們一塊兒開啓一個專題,刷刷高頻面試題~ 從字符串開始。 這道題題意很好理解,我就不過度解讀了。咱們用雙指針的解法,直接代碼招呼:算法

func isPalindrome(s string) bool {
	//若是字符串長度爲0或者爲1,確定爲true咯
    if len(s) <= 1 {
    	return true
    }
    //雙指針
    low, hi := 0, len(s) - 1
    for low < hi {
    	//這裏是判斷當前指向的字符是否爲數字或者字母
    	//並且,low和hi能夠用for的語法進行修改~是一個很酷的減小代碼量的技巧哦
        for ; low < hi && !isValid(s[low]); low++ {}
        for ; low < hi && !isValid(s[hi]); hi--{}
        byteLow, byteHi := s[low], s[hi]
        //這裏不用多說了,大寫統一轉成小寫
        if byteLow >= 'A' && byteLow <= 'Z' {
        	byteLow = byteLow - 'A' + 'a'
        }
        if byteHi >= 'A' && byteHi <= 'Z' {
        	byteHi = byteHi - 'A' + 'a'
        }
        //碰到不知足的直接return
        if byteLow != byteHi {
        	return false
        }
        low, hi = low+1, hi-1
    }
    return true
}

func isValid(b byte) bool {
    return (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || (b >= '0' && b <= '9')
}
複製代碼

由儉入奢易,由奢入儉難!作了不少題以後反過來看這樣一道「簡單」的題目,反而學到了不少東西。咱們不能小看任何一道題,不能小看人生中任何一道坎,可是,最不能小看的,就是身邊那些看似不起眼的人,相信我哦,咱們都被金子包圍着,因此,咱們更要成爲金子。ui

算法夢想家,來跟我一塊兒玩算法,玩音樂,聊聊文學創做,我們一塊兒天馬行空! spa

在這裏插入圖片描述
相關文章
相關標籤/搜索