美文网首页
有重复字符串的排列组合(golang)

有重复字符串的排列组合(golang)

作者: 薇清潜 | 来源:发表于2020-07-04 11:45 被阅读0次

原题:有重复字符串的排列组合

无重复字符串的排列组合(golang)类似,只是由于golang没有set,需要把[]string存储改为用map存储,字符串作为map的key存储,map的val用不占用内存空间的bool类型就行,最后将map的key遍历返回即可。

func permutation(S string) []string {

    // 使用map存储,这样就能排除重复数据,最后遍历map,取出所有的key
    m := make(map[string]bool)
    m[S] = true
    l := len(S)
    for i := 0; i < l-1; i ++ {
        for j := i + 1; j < l; j ++ {
            for s, _ := range m { // 为每个已存在的字符串交换ij字符的位置
                t := []byte(s)
                t[i], t[j] = t[j], t[i]
                m[string(t)] = true
            }
        }
    }
    ret := make([]string, len(m))
    i := 0
    for s, _ := range m {
        ret[i] = s
        i ++
    }
    return ret
}

相关文章

网友评论

      本文标题:有重复字符串的排列组合(golang)

      本文链接:https://www.haomeiwen.com/subject/cequqktx.html