Welcome to JiKe DevOps Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
380 views
in Technique[技术] by (71.8m points)

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

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

Please log in or register to answer this question.

1 Answer

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to JiKe DevOps Community for programmer and developer-Open, Learning and Share
...