Swift-对数组中每个字符串中的字符进行排序

科恩

因此,这个问题是该问题的后续解决方案:允许相同字符串的快速字符串排列

在那里,我询问了我可以使用一组定义的字符串进行的所有可能的突变。我接下来要做的是过滤出具有相同组合但顺序不同的所有结果。

因此,如果输入为:["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"]]

虽然我期望sortedArray:

["AB", "AC", "CD", "AC", "BC"]

然后我想将各个字符串重新组合在一起:

print(array.map{ $0.joined() } )

导致 ambiguous reference to member 'joined()'

但是我不知道如何解决这个问题。

我也看到了这一点:在使用以下代码的字符串快速排序字符

var nonSortedString = "5121"
var sortedString = String(Array(nonSortedString.characters).sort())

但我看不到如何使用map和朋友应用(转换为Swift 4之后)

任何帮助表示赞赏。

如果您想获取一个字符串,对其字符进行排序,然后从中构建一个新的字符串,在Swift 4中,您可以:

let string = "foobar"

let sortedString = String(string.sorted())

结果是:

“老兄”

因此,回到您的原始问题,您可以获取字符串(是排列的集合),并构建如下组合的排序数组:

let permutations = ["AB", "AC", "DC", "CA", "CB"]

// build set of combinations where each string has, itself, been sorted alphabetically

let combinations = Set(permutations.map { String($0.sorted()) })

// convert set (which removed duplicates) back to an array and sort it

let result = Array(combinations).sorted()

结果是:

[“ AB”,“ AC”,“ BC”,“ CD”]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在swift中分别对两个字符串数组进行排序

将字符串拆分为数组(每个字符)-Swift

如何在swift中通过另一个字符串值连接数组中的每个元素

在Swift中从字符串中删除某个字符之后的所有字符

通过比较字符串值 swift 对数组进行排序

如何在Swift中对字符串的行进行排序?

Swift 4中textField中前4个字符的子字符串

如何在 Swift 中按倒序/降序按长度对字符串数组进行排序?

Swift中字符串的字符数组

swift:比较 2 个字符数组,从每个数组中删除一个值

SWIFT:“压缩” /小字符串类型?每个字符1个字节?

如何在Swift 5中检查字符串是否包含多个字符

Swift在两个字符串中获取不同的字符

在Swift中,如何在第n个字符处分割字符串?

Swift字符串到单个字符串数组

在Swift 3中将字符串放在文本内的某个字符串之前

Ruby按每个字符串中的时间值对字符串数组进行排序

如何仅使用 Ruby 中字符串的前 5 个字符对数组进行排序?

在Swift UI中读取JSON的单个字符串

如何在Swift中为多个字符串过滤UISearchBar?

比较 Swift 中的字符串数组

如何用Swift中的另一个字符替换字符串的所有字符?

如何在Swift中检查一个字符串是否包含另一个字符串?

在Swift中对字符串字符重新排序

在swift 3中将数组项连接到一个字符串中作为标签

Swift中的字符串方法来替换字符串中的第一个字符

从知道Swift中第一个和最后一个字符的字符串中删除子字符串

如何在Swift 4中删除字符串的最后一个字符?

Swift:从字符串中删除最后一个字符是其反斜杠