How to write a recursive function to generate all permutations of a string in Swift

1 Answer

0 votes
func swap(_ str: inout [Character], _ i: Int, _ j: Int) {
    let temp = str[i]
    str[i] = str[j]
    str[j] = temp
}

func generatePermutation(_ str: inout [Character], _ l: Int, _ r: Int) {
    if l == r {
        print(String(str))
    } else {
        for i in l...r {
            swap(&str, l, i)
            generatePermutation(&str, l + 1, r)
            swap(&str, l, i) // backtrack
        }
    }
}

let s = "ABC"

var chars = Array(s)

generatePermutation(&chars, 0, chars.count - 1)



/*
run:

ABC
ACB
BAC
BCA
CBA
CAB

*/

 



answered 6 days ago by avibootz
...