美文网首页工作生活
iOS高阶算法2:最短回文串(Swift语言实现)

iOS高阶算法2:最短回文串(Swift语言实现)

作者: 小呀小苹果呀 | 来源:发表于2019-07-03 10:12 被阅读0次
image.png
class Solution {
    func shortestPalindrome(_ s: String) -> String {
        let rev = String(s.reversed())
        let temp = s + "#" + rev
        let next = getKMPNext(str: temp)
        
        let r = rev.prefix((rev.count - next[temp.count - 1] - 1))
        return String(r) + s
    }
    
    func getKMPNext(str: String) -> [Int] {
        var next = [Int](repeating: -1, count: str.count)
        
        let p = str.map { String($0) }
        
        var j: Int = 0
        var k: Int = -1
        
        while j < p.count - 1 {
            if k == -1 || p[j] == p[k] {
                j += 1
                k += 1
                next[j] = k
            }
            else {
                k = next[k]
            }
        }
        
        return next
    }
}

相关文章

网友评论

    本文标题:iOS高阶算法2:最短回文串(Swift语言实现)

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