在网上找了一段代码,但是输入英文字符可用,输入中文就不好用了
比如我想排列的字符串是:高中低,预期结果为:高高高、高低中、高低低....类似,把所有情况都打印出来
然后自己改了下,没改出来,不知道怎么弄了,附原代码和我改的代码:
原代码:
```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
}
```
有疑问加站长微信联系(非本文作者)