Ben Swift aşağıdaki kodu yeniden zarif bir şekilde resmeden sorun yaşıyorum:Bölme çifti içine bir kelime
Python (doğru, özlü, zarif):
>>> def splits(word):
... return [(word[:i], word[i:]) for i in range(len(word) + 1)]
...
>>> splits("abc")
[('', 'abc'), ('a', 'bc'), ('ab', 'c'), ('abc', '')]
Swift in (sahte ve ağır tarafında biraz):
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")]"
Gördüğünüz gibi, Swift sürüm th eksik Son çift. Karakter dizisindeki indekslerin, harita kapamasındaki son karakteri geçmediğini bilerek bunu (bir son çifti manuel olarak ekleme yanında) nasıl başarabilirim?
DÜZENLEME:
I yanıt bu uyarlanmış
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)))
}
}
Not t kodunuzda bir * tek dize * döndürür ve bir dizi kelime çifti değil. –
Sorunuzu girdinize göre güncelleştirin. – Laurent