gpt4 book ai didi

swift - 将单词拆分成对

转载 作者:行者123 更新时间:2023-11-28 12:52:07 25 4
gpt4 key购买 nike

我无法想象在 Swift 中重新创建以下代码的优雅方式:

在 Python 中(正确、简洁、优雅):

>>> def splits(word):
... return [(word[:i], word[i:]) for i in range(len(word) + 1)]
...
>>> splits("abc")
[('', 'abc'), ('a', 'bc'), ('ab', 'c'), ('abc', '')]

在 Swift 中(伪造的,有点偏重):

func splits(word: String) -> [(String,String)] {
return word.characters.indices.map {
return (word[word.startIndex..<$0], word[$0..<word.endIndex])
}
}

splits("abc")

"[("", "abc"), ("a", "bc"), ("ab", "c")]"

如您所见,Swift 版本缺少最后一对。知道字符串上的索引不会通过映射闭包中的最后一个字符,我如何实现这一点(除了手动附加最后一对)?

编辑:

我根据答案改编了这个:

func splits(word: String) -> [(String,String)] {
let chars = word.characters
return (0...chars.count).map {
(String(chars.dropFirst($0)),String(chars.dropLast(chars.count - $0)))
}
}

最佳答案

另一种可能的解决方案:

func splits(word: String) -> [(String, String)] {

return (0 ... word.characters.count).map {
(word.substringToIndex(word.startIndex.advancedBy($0)),
word.substringFromIndex(word.endIndex.advancedBy(-$0)))
}
}

splits("abc")
// [("", "abc"), ("a", "bc"), ("ab", "c"), ("abc", "")]

关于swift - 将单词拆分成对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36183471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com