登录
首页 >  Golang >  Go问答

GoLang里怎么对一个中文字符串进行排列组合?

来源:SegmentFault

时间:2023-01-08 15:52:56 314浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《GoLang里怎么对一个中文字符串进行排列组合?》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下go,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

有一个字符串,比如 “低中高”
想用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
}

我改的代码:

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
}

正确答案

排列组合,中文字符rune类型处理

image.png

以上就是《GoLang里怎么对一个中文字符串进行排列组合?》的详细内容,更多关于golang的资料请关注golang学习网公众号!

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