無重複字串的排列組合

pardon110發表於2020-07-22

題面

力扣連結

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

相關文章