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

1 Answer

0 votes
fn swap(arr: &mut [char], i: usize, j: usize) {
    arr.swap(i, j);
}

fn generate_permutation(arr: &mut [char], l: usize, r: usize) {
    if l == r {
        println!("{}", arr.iter().collect::<String>());
    } else {
        for i in l..=r {
            swap(arr, l, i);
            generate_permutation(arr, l + 1, r);
            swap(arr, l, i); // backtrack
        }
    }
}

fn main() {
    let mut chars: Vec<char> = "ABC".chars().collect();
    
    let len = chars.len();
    
    generate_permutation(&mut chars, 0, len - 1);
}



/*
run:

ABC
ACB
BAC
BCA
CBA
CAB

*/

 



answered Nov 5 by avibootz
...