leecode4:求

[最長回文子串]

解題思路一:我們所需的時間復(fù)雜度是O(N)
用一個字典保存一個字符串出現(xiàn)的第一次index,然后遍歷字符串直到結(jié)束。

代碼如下:

class Solution {
    func longestPalindrome(_ s: String) -> String {
      var dic = [Character : Int]()
        var maxLength = 0
        var currentChar: Character?
        var index = 0
        s.forEach { (char) in
            if let startIndex = dic[char]{
                let length = index + 1 - startIndex
                if length > maxLength {
                    currentChar = char
                    maxLength = length
                }
            }else{
                dic[char] = index
            }
            index += 1
        }

        if maxLength == 0{
            if s.length > 1{
            return String(s[s.index(s.endIndex, offsetBy: -1)..<s.endIndex])
            }else{
                return s
            }
        }else{
            let startIndex = dic[currentChar!]
            let sIndex = s.index(s.startIndex, offsetBy: startIndex!)
            let eIndex = s.index(sIndex, offsetBy:maxLength)
            return String(s[sIndex..<eIndex])
        }
    }
}

第二種解法:

采用快速遍歷:
一個從頭開始計算一個從尾部開始。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 2. 實現(xiàn) Singleton 3. 數(shù)組中重復(fù)的數(shù)字 4. 二維數(shù)組中的查找 5. 替換空格 6. 從尾到...
    Observer_____閱讀 3,152評論 0 1
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,695評論 0 5
  • 1. 找出數(shù)組中重復(fù)的數(shù)字 題目:在一個長度為n的數(shù)組里的所有數(shù)字都在0到n-1的范圍內(nèi)。數(shù)組中某些數(shù)字是重復(fù)的,...
    BookThief閱讀 1,999評論 0 2
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,235評論 0 38
  • 每天回顧目標(biāo) 每天回顧習(xí)慣的養(yǎng)成
    清爽的生活閱讀 214評論 0 0

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