我有两个 Go 函数:
func permutation(prefix, str []int) {
n := len(str)
if n == 0 {
fmt.Println(prefix)
} else {
for i := 0; i < n; i++ {
permutation(
append(prefix, str[i]),
append(str[0:i], str[i+1:]...),
)
}
}
}
func perms(prefix, str string) {
n := len(str)
if n == 0 {
fmt.Println(prefix)
} else {
for i := 0; i < n; i++ {
perms(
prefix+string(str[i]),
string(str[0:i])+string(str[i+1:]),
)
}
}
}
第一个需要一个整数数组,第二个需要一个字符串。然后他们都计算数组或字符串的所有排列。
我可以像这样运行它们:
permutation([]int{}, []int{1, 2, 3})
perms("", "123")
他们的输出是不一样的:
$ go run main.go
[1 2 3]
[1 3 3]
[3 3 3]
[3 3 3]
[3 3 3]
[3 3 3]
123
132
213
231
312
321
我想附加我缺少的数组有一些细微差别。我似乎无法弄清楚。知道发生了什么吗?
慕田峪4524236
相关分类