A permutation, also called an “arrangement number” or “order”, 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 ( Source: Mathword )

Below are the permutations of string ABC.

ABC ACB BAC BCA CBA CAB

We have discussed different recursive approaches to print permutations here and here.

**How to print all permutations iteratively?**

A **simple solution** to use permutations of n-1 elements to generate permutations of n elements.

For example let us see how to generate permutations of size 3 using permutations of size 2.

Permutations of two elements are 1 2 and 2 1.

Permutations of three elements can be obtained by inserting 3 at different positions in all permutations of size 2.

Inserting 3 in different positions of 1 2 leads to 1 2 3, 1 3 2 and 3 1 2.

Inserting 3 in different positions of 2 1 leads to 2 1 3, 2 3 1 and 3 2 1.

To generate permutations of size four, we consider all above six permutations of size three and insert 4 at different positions in every permutation.

An efficient solution is to use Johnson and Trotter algorithm to generate all permutations iteratively.

## Recommended Posts:

- Permutations of a given string using STL
- Distinct permutations of the string | Set 2
- Print all palindrome permutations of a string
- Write a program to print all permutations of a given string
- Print all distinct permutations of a given string with duplicates
- Check if a binary string contains all permutations of length k
- Print all the palindromic permutations of given string in alphabetic order
- Number of permutations of a string in which all the occurrences of a given character occurs together
- Number of unique permutations starting with 1 of a Binary String
- Generate all binary permutations such that there are more or equal 1's than 0's before every point in all permutations
- Missing Permutations in a list
- Check if two arrays are permutations of each other
- Problem on permutations and combinations | Set 2
- Number of palindromic permutations | Set 1
- Generate all cyclic permutations of a number