swift 验证字符串是否具有O(n)中的回文的任何排列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift 验证字符串是否具有O(n)中的回文的任何排列相关的知识,希望对你有一定的参考价值。

/// The approach is about counting the number of each character and verifies if exists zero or one
/// character with odd number of repetitions.
func hasPalindromePermutation(in theString: String) -> Bool {
    
    // dictionary with chars and their repetitions in theString.
    var charsRepDic: [Character: Int] = [:]
    
    let val = Array(theString)
    
    val.forEach { char in
        let currentRep = charsRepDic[char] ?? 0
        charsRepDic[char] = currentRep+1
    }
    
    // the first odd char was found
    var hasAnOddChar: Bool = false
    
    for key in charsRepDic.keys {
        if charsRepDic[key]! % 2 != 0 {
            if hasAnOddChar {
                return false
            } else {
                hasAnOddChar = true
            }
        }
    }
    
    return true
}

以上是关于swift 验证字符串是否具有O(n)中的回文的任何排列的主要内容,如果未能解决你的问题,请参考以下文章

Manacher算法+注释

Manacher算法最长子回文串

如何检查字符串是不是以回文开头?

什么是马拉车算法(Manacher's Algorithm)?

最长回文子串的不同解法

swift 在swift 2中检查字符串是否为回文的函数