美文网首页工作生活
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