Golang program to print all Permutations of a given string
A permutation, is a rearrangement of the elements of an ordered list S into a one-to-one correspondence with S itself. A string of length n has n! permutation. Let's take an example of "ABCD" and write a program to generate all possible permutation and combinations of string in Golang.
Example
package main
import (
"fmt"
)
func join(ins []rune, c rune) (result []string) {
for i := 0; i <= len(ins); i++ {
result = append(result, string(ins[:i])+string(c)+string(ins[i:]))
}
return
}
func permutations(testStr string) []string {
var n func(testStr []rune, p []string) []string
n = func(testStr []rune, p []string) []string{
if len(testStr) == 0 {
return p
}else {
result := []string{}
for _, e := range p {
result = append(result, join([]rune(e), testStr[0])...)
}
return n(testStr[1:], result)
}
}
output := []rune(testStr)
return n(output[1:], []string{string(output[0])})
}
func main() {
d := permutations("ABCD")
fmt.Print(d)
}
Most Helpful This Week
Golang read file line by line to string
How do you handle HTTP authentication with an HTTP client in Go?
GO Program to take user input and addition of two strings
Launches 10 Goroutines and each goroutine adding 10 values to a Channel
How do you handle HTTP server HTTP/2 in Go?
What is an HTTP server in Go?