因为项目需求,要用到全排列,在此记录下来。全排列公式: f(n) = n! (n>=0)
此demo为,输入一个字符串,遍历字符串中每个字符,并组成一个新的字符串。通过递归算法,得到所有字符组成的字符串的所有可能。
static func allArrangementAlgorithm(text: String) -> [String] {
var allPermutation:[String] = []
guard text.characters.count == 1 else {
for n in 0..
let singleString: String = (text as NSString).substring(with: NSRange(location: n, length: 1))
let deleteSingleString: NSMutableString = NSMutableString.init(string: text)
deleteSingleString.deleteCharacters(in: NSRange(location: n, length: 1))
let sub:[String] = allArrangementAlgorithm(text: deleteSingleString as String)
for (_, value) in sub.enumerated() {
let strOfCombine = (singleString as String)+value
allPermutation.append(strOfCombine)
}
}
return allPermutation
}
allPermutation.append(text)
return allPermutation
}