golang求对给定字符串的全排列

这个功能函数经常会用到,但在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))
        })
}

你可能感兴趣的:(golang求对给定字符串的全排列)