Swift - 排列组合之全排列 (输入一个字符串,输出该字符串包含的字符的所有组合)
2017-06-13 14:59
1136 查看
因为项目需求,要用到全排列,在此记录下来。全排列公式: 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..<text.characters.count {
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
}
此demo为,输入一个字符串,遍历字符串中每个字符,并组成一个新的字符串。通过递归算法,得到所有字符组成的字符串的所有可能。
static func allArrangementAlgorithm(text: String) -> [String] {
var allPermutation:[String] = []
guard text.characters.count == 1 else {
for n in 0..<text.characters.count {
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
}
相关文章推荐
- 输入一个字符串,输出该字符串中字符的所有组合 C#【总结】
- 已知一个字符串,输出它包含字符的所有排列(permutations)
- 输入一个字符串,输出该字符串中字符的所有组合。(腾讯2014笔试附加题)
- 输入一个字符串,输出该字符串中字符的所有组合
- 题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
- 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。
- 输入一个字符串,输出该字符串中字符的所有组合
- 输入一个字符串,要求输出字符串中字符所有的排列,例如输入"abc",得到"abc","acb","bca","bac","cab","cba"
- 输入一个字符串,输出该字符串中字符的所有组合
- 输入一个字符串,输出该字符串中字符的所有组合
- 题目:输入一个字符串,输出该字符串中字符的所有组合
- C#实现输入一个字符串输出该字符串字符的所有排列方式
- Java练习题-输入一个字符串,输出该字符串中字符的所有组合(二)
- 【编程题】输入一个字符串,输出该字符串中相邻字符的所有组合。
- 题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。
- Java练习题-输入一个字符串,输出该字符串中字符的所有组合
- 输入一个字符串,打印出该字符串中字符的所有排列
- 输入一个字符串,打印出该字符串中字符的所有排列
- 输入一个字符串,打印出该字符串中字符的所有排列
- 题目:输入一个字符数组,输出所有的排列。