Swift

来源:互联网 发布:淘宝优惠券怎么用不了 编辑:程序博客网 时间:2024/05/21 18:40

因为项目需求,要用到全排列,在此记录下来。全排列公式: 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    }


原创粉丝点击