请问如何将一个中文字符串的所有排列组合情况打印出来?

feeso4 · · 1197 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

在网上找了一段代码,但是输入英文字符可用,输入中文就不好用了 比如我想排列的字符串是:高中低,预期结果为:高高高、高低中、高低低....类似,把所有情况都打印出来 然后自己改了下,没改出来,不知道怎么弄了,附原代码和我改的代码: 原代码: ```go func permutation(S string) []string { if len(S) == 1 { return []string{S} } // 与拼接得到的各个字符串再进行拼接 ret := []string{} for i, s := range S { // 差了第i个字符的剩余字符串往下传,并将得到的结果进行合并 tmp := fmt.Sprintf("%s%s", S[:i], S[i+1:]) res := permutation(tmp) for _, r := range res { ret = append(ret, fmt.Sprintf("%c%s", s, r)) } } return ret } ``` 我改的代码: ```go func permutation(S string) []rune { nameRune := []rune(S) if len(nameRune) == 1 { return nameRune } // 与拼接得到的各个字符串再进行拼接 ret := []rune{} for i, s := range nameRune { // 差了第i个字符的剩余字符串往下传,并将得到的结果进行合并 tmp := fmt.Sprintf("%c%c", nameRune[:i], nameRune[i+1:]) res := permutation(tmp) for _, r := range res { ret = append(ret, s, r) } } return ret } ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1197 次点击  
加入收藏 微博
2 回复  |  直到 2021-02-15 20:33:16
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传