【问题标题】:How to check a string is symmetric or not in Swift如何在 Swift 中检查字符串是否对称
【发布时间】:2021-05-09 17:48:26
【问题描述】:

返回值 == String(value.reversed())

这是我尝试过的。它运作良好,但需要更长的时间。有谁知道更好的方法吗?

【问题讨论】:

标签: swift string symmetric


【解决方案1】:

String 或其他任何东西的标准库中没有可用的内容,因此仅适用于 String 的解决方案可能不是最佳选择。

你不需要创建基于reversed 的任何东西的新实例; elementsEqual 完成这项工作。

public extension Sequence where Element: Equatable {
  var isSymmetric: Bool { elementsEqual(reversed()) }
}
"?????".isSymmetric // true
"???".isSymmetric // false

【讨论】:

    【解决方案2】:

    您可以在 c 中从头到尾一次测试每个字符,直到您的两个索引在中间相遇。但是对于 Swift,你不能保证 Swift 字符串中的字符长度相同,它们必须存储由 unicode 字符组成的字符串,目前可以有 100,000 个字符之一,我认为他们目前通过使用 UTF16 对字符串进行故事化来做到这一点。所以你不能只使用偏移逻辑来快速计算一个字符的索引,你必须枚举每个字符,检查每个字符的长度才能到达下一个。由于 NSString 的私有子类的潜力,Objective-C 使这变得更加复杂,每个子类都可以有不同的编码方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 2019-09-04
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 2019-12-29
      相关资源
      最近更新 更多