返回值 == String(value.reversed())
这是我试过的。它运作良好,但需要更长的时间。有人知道更好的方法吗?
答案 0 :(得分:2)
标准库中没有可用于 String
或其他任何东西的内容,因此仅适用于 String
的解决方案可能不是最佳选择。
您不需要基于 reversed
创建任何新实例; elementsEqual
完成工作。
public extension Sequence where Element: Equatable {
var isSymmetric: Bool { elementsEqual(reversed()) }
}
"?????".isSymmetric // true
"???".isSymmetric // false
答案 1 :(得分:0)
您可以在 c 中从头到尾一次测试每个字符,直到您的两个索引在中间相遇。但是对于 Swift,您不能保证 Swift 字符串中的字符长度相同,它们必须存储由 unicode 字符组成的字符串,目前可以具有 100,000 个字符之一,我认为它们目前通过使用 UTF16 编写字符串来实现这一点。所以你不能仅仅使用偏移逻辑来快速计算一个字符的索引,你必须枚举每个字符,检查每个字符的长度才能到达下一个。由于 NSString 的私有子类的潜力,Objective-C 使这变得更加复杂,每个子类都可以有不同的编码方法。