【发布时间】:2017-01-02 18:53:43
【问题描述】:
我有一个字符串数组,我想找到其元素的所有可能组合
例如:
数组 = [A,B,C,D]
应该产生结果:
[A,AB,AC,AD,ABC,ABD,ACD,ABCD,B,BC,BD,BCD,C,CD,D]
这是我的逻辑:
var array = ["A", "B", "C","D"]
var list = [String]()
for i in 0..<array.count{
let c = array[i]
list.append(c)
var d = c
for count in 1..<array.count{
if i+count < array.count{
for j in i+count..<array.count{
var a = d
a.appendContentsOf(array[j])
print("a : \(a)")
list.append(a)
}
}
d = c
d.appendContentsOf(array[count])
print("d : \(d)")
}
}
print(list.description)
它的输出是:
[“A”、“AB”、“AC”、“AD”、“ABC”、“ABD”、“ACD”、“B”、“BC”、“BD”、“BBD” , “C”、“CD”、“D”]
此输出缺少 ABCD 并且错误地将 BCD 打印为 BBD
任何人请通过增强我的代码或为此建议您自己的逻辑来帮助我。
【问题讨论】:
-
我之前已经搜索过了,这个链接的问题是排列而不是组合(我只想要 ABCD 而不是 ABCD,ACBD ...)
-
您的结果重复例如B 和 C。我认为这不是故意的?
-
哦,是的,这是一个错字……我正在编辑我的问题……谢谢
标签: arrays swift logic combinations