美文网首页
leecode4:求

leecode4:求

作者: boy丿log | 来源:发表于2019-08-07 17:39 被阅读0次
    [最长回文子串]

    解题思路一:我们所需的时间复杂度是O(N)
    用一个字典保存一个字符串出现的第一次index,然后遍历字符串直到结束。

    代码如下:

    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])
            }
        }
    }
    

    第二种解法:

    采用快速遍历:
    一个从头开始计算一个从尾部开始。

    相关文章

      网友评论

          本文标题:leecode4:求

          本文链接:https://www.haomeiwen.com/subject/mxlgdctx.html