开发者社区> 问答> 正文

给定索引打印排列

我正在尝试学习递归,并通过斯坦福大学在线视频讲座和教科书进行学习。在编程练习中,提出一个问题以生成给定索引的字符串的所有排列。例如“ ABCD”和索引2。这将生成“ ABCD”和“ ABDC”。

我知道如何使用来生成排列,func permute(prefix, suffix)但是这个问题使我感到困惑。这是我到目前为止想要的:

func permute(s string) {
    permuteHelper(s, 2)
}

func permuteHelper(s string, idx int) {
    if idx == 0 {
        fmt.Println(s)
        return
    }
    for i := idx; i < len(s); i++ {
        newS := s[:idx]
        suffix := s[idx : idx+1]
        newS += suffix
        permuteHelper(newS, idx-1)
    }
}

output:
AB
AB
AB
AB

我不想要答案,但是我的思维过程中可能需要一些指导。我知道我应该创建一个静态的“ AB”,然后在一次迭代中选择“ C”,然后选择“ D”,然后应该触发我的基本情况并打印字符串。然后,控制权将返回到“ AB”,“ i”应为3,然后选择“ D”,但是如何选择“ C”呢?

展开
收起
几许相思几点泪 2019-12-05 15:34:51 367 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载