无重复字符串的排列组合

题面

力扣链接

 输入:S = "qwe"
 输出:["qwe", "qew", "wqe", "weq", "ewq", "eqw"]

分析

实质为排列组合,简化为n个不同数,打印所有不同组合情况
排列组合
每一层排列情况,依赖于上一层排列的结果情况
即问题可以简化为,假定有n个人排队,该队队列不变化,新增1人可在每个人前后插入,新进者 n+1 插入方法

golang实现

func permutation(S string) []string {
    if len(S) == 1 {
        return []string{S}
    }
    nest := permutation(S[:len(S)-1])
    l := []string{}
    for i := 0; i < len(nest); i++ {
        for j := 0; j < len(nest[i]); j++ {
            l = append(l, nest[i][:j]+S[len(S)-1:]+nest[i][j:])
        }
        l = append(l, nest[i]+S[len(S)-1:])
    }
    return l
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
pardon110
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
开发者 @ 社科大
文章
134
粉丝
24
喜欢
101
收藏
55
排名:106
访问:8.9 万
私信
所有博文
社区赞助商