【问题标题】:Expand a string of slice by delimiter通过分隔符扩展一串切片
【发布时间】:2018-12-10 01:46:20
【问题描述】:

我想通过分隔符“/”扩展一个切片字符串。

例如,展开下面的切片

s := []string{"5/3","9","5/4/1","6"}

应该产生单独的切片:

["5","9","5","6"] ["5","9","4","6"] ["5","9","1","6"]
["3","9","5","6"] ["3","9","4","6"] ["3","9","1","6"]

我几乎被困在这里

var c [][]string{}
s := []string{"5/3","9","5/4/1","6"}
for _, v := range s {
    combos := strings.Split(v, "/")
    for _, combo := range combos {

    }       
}

【问题讨论】:

  • 仅供参考,您在这里寻找的术语是“扩展”。
  • 你真的希望这里的人做你的功课吗?
  • 我投票结束这个问题,因为作业离题。
  • @Volker 我不确定你的作业问题是什么意思。我被这里的逻辑困住了,下面的 ssemilla 在回答中对此进行了解释。我可以看到类似的问题在其他编程语言中被多次投票。附言不知道有多少大学课程是基于golang来做作业的!

标签: string go slice


【解决方案1】:

抛开运行时间,您可以通过递归来实现。

func Perm(digits [][]string) (perm [][]string) {

    if len(digits) == 0 || len(digits) == 1 {
        return digits
    }

    nextDigits := Perm(digits[1:])
    for _, digit := range digits[0] {
        for _, next := range nextDigits {
            cat := append([]string{digit}, next...)
            perm = append(perm, cat)
        }
    }

    return perm
}

Playground

【讨论】:

    猜你喜欢
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 2016-07-08
    • 1970-01-01
    • 2018-06-09
    • 2012-07-31
    • 2014-03-02
    相关资源
    最近更新 更多