登录
首页 >  Golang >  Go问答

从地图生成组合字符串

来源:stackoverflow

时间:2024-04-08 22:54:35 295浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《从地图生成组合字符串》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我有一张这样的地图:

// map[int]          position in string
// map[rune]bool     characters possible at said position
func generateString(in map[int]map[rune]bool) []string { 
    // example: {0: {'A':true, 'C': true}, 1: {'E': true}, 2: {'I': true, 'X': true}}
    result := []string{"AEI", "AEX", "CEI", "CEX"} // should generate these
    return result
}

与所有可能的排列的区别在于,我们通过索引指定哪些排列是可能的,我认为这是真正令人头疼的地方。


解决方案


首先,我们需要将 map[int]map[rune]bool 转换为 []map[rune]bool,因为 map 迭代不能保证按键排序

之后,这就是递归方法

var res []string

func dfs(curString string, index int, in []map[rune]bool) {
    if index == len(in) {
        res = append(res, curString)
        return
    }

    for ch, is := range in[index] {
        if !is { // I assume booleans can be false
            return
        }
        dfs(curString+string(ch), index+1, in)
    }
}

我们可以用 dfs("", 0, arr) 来调用它,其中 arr 被给定 map 转换为 slice 并且答案将在 res 变量中

到这里,我们也就讲完了《从地图生成组合字符串》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>