这个问题是上一个问题的后续: 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() } )
导致joined()
成员引用不明确。
但我不知道如何解决这个问题。
我还看到了这个:swift sort characters in a string,其中使用了以下代码:
var nonSortedString = "5121"
var sortedString = String(Array(nonSortedString.characters).sort())
但我不知道如何在使用map
和相关函数时应用它(在转换为Swift 4后)。
如果有任何帮助,将不胜感激。