Swift-字符串排列

题目:确定某字符串的全部排列组合.

核心代码:

   func getPerms(str:String) -> [String] {
        
        var permutations:[String] = []
        
        if str.characters.count == 0 {
            permutations.append("")
            return permutations
        }
        
        let first:String = str[0]
        let index = str.index(str.startIndex, offsetBy: 1)
        let remainder:String = str.substring(from: index)
        let words:[String] = getPerms(str: remainder)
        
        for word in words {
            
            for i in 0...word.characters.count {
                let str:String = insertCharAt(word: word, mid: first, i: i)
                permutations.append(str)
            }
        }
        
        return permutations
    }
    
    func insertCharAt(word:String,mid:String,i:Int) -> String {
        let index = word.index(word.startIndex, offsetBy: i)
        let start:String = word.substring(to: index)
        let end:String = word.substring(from: index)
        let result = start + mid + end
        
        return result
    }

测试代码:

var permutations:[String] = recursion.getPerms(str: "abc")
print("FlyElephant---字符串排列:\(permutations)")
FlyElephant.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,280评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,839评论 18 399
  • 最近在《简书》看见有一些人写了一篇篇关于自己的一种习惯,已经坚持了很多年的,两年,三年甚至十几年,看着看着不禁也很...
    芃芃女孩阅读 1,447评论 32 37
  • 高中入学时,我分到了高一3班,照惯例,这是一个普通班。 虽然身处普通班,但班上不乏刻苦努力、成绩不错的...
    Clearness阅读 328评论 0 0
  • 1 这一个拥抱,对于南朔来说,仿佛是过了一个世纪。多希望,时光就此老去。被他轻轻拥住的人,灰色毛衣上有着好闻的青柠...
    沈梦之阅读 268评论 0 0