这个功能函数经常会用到,但在leetcode周赛上又不是手到拈来,记录一下这个函数。
func perm(a []rune, f func([]rune), i int) {
if i > len(a) {
f(a)
return
}
perm(a, f, i+1)
for j := i + 1; j < len(a); j++ {
a[i], a[j] = a[j], a[i]
perm(a, f, i+1)
a[i], a[j] = a[j], a[i]
}
}
func Perm(a []rune, f func([]rune)) {
perm(a, f, 0)
}
func main() {
Perm([]rune("abcd"), func(r []rune){
fmt.Println(string(r))
})
}