无重复字符串的排列组合
题面
输入: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 协议》,转载必须注明作者和本文链接