swift - 如何使用递归定义在 Swift 中检查回文

标签 swift recursion palindrome

我喜欢 Swift 中的许多功能,但使用操作字符串仍然是个大麻烦。

func checkPalindrome(word: String) -> Bool {
    print(word)
    if word == "" {
        return true
    } else {
        if word.characters.first == word.characters.last {
            return checkPalindrome(word.substringWithRange(word.startIndex.successor() ..< word.endIndex.predecessor()))
        } else {
            return false
        }
    }
}

只要字符串的长度是奇数,这段代码就会失败。当然我可以做到,所以 block 的第一行是 if word.characters.count < 2 ,但是 Swift 中有没有一种方法可以轻松获取子字符串并进行检查?

更新 我喜欢很多建议,但我想最初的问题可能有点误导,因为这是一个关于 String 的问题,而不是获得函数的正确结果。

例如,在 Python 中,checkPalindrome(word[1:-1]) 可以很好地用于递归定义,而 Swift 代码则不那么优雅,因为它需要其他附加功能。

最佳答案

return word == String(word.reversed())

关于swift - 如何使用递归定义在 Swift 中检查回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34489497/

相关文章:

Ruby 左递归与右递归

python - 输入是否为回文

ios - swift:在零时停止倒数计时器

ios - 在 iOS 中验证文本域

ios - prepareForSegue 编译器错误

ios - SWIFT 2 - 不可能将值从 UICollectionViewController 传递到 UICollectionViewCell。发现无

python - 创建 self 循环的链条

c++ - 主要跳过功能?

java - 回文检查器 Java boolean 洞察力

c - C 中的回文子串排序器