所以这个问题是这个问题的后续问题:允许相同字符串的快速字符串排列 https://stackoverflow.com/questions/48976065/swift-string-permutations-allowing-the-same-strings/
在那里,我询问了我可以使用一组定义的字符串进行的所有可能的突变。接下来我想做的是过滤掉具有相同组合但顺序不同的所有结果。
所以如果输入是:["AB", "AC", "CA", "CB"]
,输出应该是["AB", "AC", "CB"]
,因为“AC”和“CA”具有相同的构建块。
所以我的想法是首先按字母顺序对每个字符串进行排序,然后也许创建一个Set
.
我已经卡在第一部分了:(
let array = ["AB", "AC", "DC", "CA", "CB"]
print(type(of: array))
print(array)
let sortedArray = array.map{ $0.sorted() }
print(type(of: sortedArray))
print(sortedArray)
输出是:
Array<String>
["AB", "AC", "DC", "CA", "CB"]
Array<Array<Character>>
[["A", "B"], ["A", "C"], ["C", "D"], ["A", "C"], ["B", "C"]]
虽然我期望排序数组:
["AB", "AC", "CD", "AC", "BC"]
然后我想将各个字符串重新连接在一起:
print(array.map{ $0.joined() } )
导致ambiguous reference to member 'joined()'
但如何解决这个问题我不明白。
我也看到了这个:快速对字符串中的字符进行排序 https://stackoverflow.com/questions/31904356/swift-sort-characters-in-a-string其中使用以下代码:
var nonSortedString = "5121"
var sortedString = String(Array(nonSortedString.characters).sort())
但我不知道如何应用它map
和朋友(转换为 Swift 4 后)
任何帮助表示赞赏。