【发布时间】:2018-02-25 16:57:48
【问题描述】:
我看过其他关于字符串排列的问题,但它们并没有完全涵盖我的问题。
假设我有一个字符串数组:["A", "B", "C", "D", "E"],我正在寻找一种方法来获取所有可能的组合,例如三个元素:
AAA, AAB, AAC, AAD, AAE, ABA, ACA, ...
其他排列解决方案(例如here 或here)不允许重复相同的元素,并导致:
ABC、ABD、ABE、BAC、...
我现在使用蛮力方法,有很多次迭代,但当然是超级慢(因为单个字符串的数量可能超过 10 个)
任何想法如何解决这个问题?
这就是我现在拥有的:
func getVariations() -> [String] {
var variations = [String]()
let elements = ["A", "B", "C", "D", "E"]
for e1 in elements {
variations.append(e1)
for e2 in elements {
variations.append(e1 + e2)
for e3 in elements {
variations.append(e1 + e2 + e3)
for e4 in elements {
variations.append(e1 + e2 + e3 + e4)
}
}
}
return variations
}
可以想象,当要添加更多元素时,这会失控。
【问题讨论】:
-
我们不在这里为您做作业。用你的实际代码更新你的问题,并清楚地解释你的代码有什么问题。
-
哇,这不是家庭作业。我将添加我已经尝试过的当前代码。
-
这可能有助于stackoverflow.com/a/25166979/1187415。稍后我会为 Swift 3/4 更新它。
-
更多可能的起点在这里:stackoverflow.com/questions/33021064/….
标签: swift string permutation