題面
輸入: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 協議》,轉載必須註明作者和本文連結