The Tech Platform

Dec 13, 20214 min

How to Print All Permutations of a Given String in C, C++, JavaScript, and Python.

Updated: Jun 2, 2023

A permutation is a specific order in which objects can be arranged. For a string of length n, there are n! (n factorial) possible permutations.

This article will guide you through finding all permutations of string using four popular programming languages: C++, Python, JavaScript, and C.

How do permutations work? Let's consider a string, "MUO," and the task of finding its permutations:

Example 1: Let's take the string str = "MUO" The permutations of "MUO" are:

  • "MUO"

  • "MOU"

  • "UMO"

  • "UOM"

  • "OUM"

  • "OMU" Take note of the different order of values in each permutation.

Example 2: Now, let's consider the string str = "AB" The permutations of "AB" are:

  • "AB"

  • "BA" It's important to note that duplicate permutations are possible if the given string contains repeating characters, such as "ABBA."

Now that you have a basic understanding of permutations, let's explore how you can find them using your preferred programming language.

Please keep in mind that the code examples provided below are tailored to output permutations for three example strings: "MUO," "AB," and "XYZ." If you wish to use any of this code, feel free to copy it and modify the strings to suit your specific project requirements.

Here are the code examples for each programming language:

C++ Program to Print All Permutations of a String

Below is the C++ program to print all permutations of a string:

// C++ program to print all
 
// permutations of a string
 
#include <bits/stdc++.h>
 
using namespace std;
 

 
// Function to print permutations of string
 
void findPermutations(string str, int leftIndex, int rightIndex)
 
{
 
if (leftIndex == rightIndex)
 
{
 
cout << str << endl;
 
}
 
else
 
{
 
for (int i = leftIndex; i <= rightIndex; i++)
 
{
 
swap(str[leftIndex], str[i]);
 
findPermutations(str, leftIndex+1, rightIndex);
 
//backtrack
 
swap(str[leftIndex], str[i]);
 
}
 
}
 
}
 
// Driver Code
 
int main()
 
{
 
string str1 = "MUO";
 
int size1 = str1.size();
 
cout << "str1: " << str1 << endl;
 
cout << "Permutations of " << str1 << ":" << endl;
 
findPermutations(str1, 0, size1-1);
 
string str2 = "AB";
 
int size2 = str2.size();
 
cout << "str2: " << str2 << endl;
 
cout << "Permutations of " << str2 << ":" << endl;
 
findPermutations(str2, 0, size2-1);
 
string str3 = "XYZ";
 
int size3 = str3.size();
 
cout << "str3: " << str3 << endl;
 
cout << "Permutations of " << str3 << ":" << endl;
 
findPermutations(str3, 0, size3-1);
 
return 0;
 
}

Output:

str1: MUO
 
Permutations of MUO:
 
MUO
 
MOU
 
UMO
 
UOM
 
OUM
 
OMU
 
str2: AB
 
Permutations of AB:
 
AB
 
BA
 
str3: XYZ
 
Permutations of XYZ:
 
XYZ
 
XZY
 
YXZ
 
YZX
 
ZYX
 
ZXY

Python Program to Print All Permutations of a String

Next, is the Python code to print all permutations of a string:

# Python program to print all
 
# permutations of a string
 
def convertToString(List):
 
return ''.join(List)
 
# Function to print permutations of string
 
def findPermutations(s, leftIndex, rightIndex):
 
if leftIndex == rightIndex:
 
print(convertToString(s))
 
else:
 
for i in range(leftIndex, rightIndex+1):
 
s[leftIndex], s[i] = s[i], s[leftIndex]
 
findPermutations(s, leftIndex+1, rightIndex)
 
# backtrack
 
s[leftIndex], s[i] = s[i], s[leftIndex]
 
# Driver Code
 
str1 = "MUO"
 
size1 = len(str1)
 
s1 = list(str1)
 
print("str1:", str1)
 
print("Permutations of", str1,":")
 
findPermutations(s1, 0, size1-1)
 
str2 = "AB"
 
size2 = len(str2)
 
s2 = list(str2)
 
print("str2:", str2)
 
print("Permutations of", str2,":")
 
findPermutations(s2, 0, size2-1)
 
str3 = "XYZ"
 
size3 = len(str3)
 
s3 = list(str3)
 
print("str3:", str3)
 
print("Permutations of", str3,":")
 
findPermutations(s3, 0, size3-1)

Output:

str1: MUO
 
Permutations of MUO:
 
MUO
 
MOU
 
UMO
 
UOM
 
OUM
 
OMU
 
str2: AB
 
Permutations of AB:
 
AB
 
BA
 
str3: XYZ
 
Permutations of XYZ:
 
XYZ
 
XZY
 
YXZ
 
YZX
 
ZYX
 
ZXY

JavaScript Program to Print All Permutations of a String

Here's how you print permutations in JavaScript:

// JavaScript program to print all
 
// permutations of a string
 
// Function to swap characters of the string
 
function swap(str, leftIndex, i) {
 
let temp;
 
let tempArray = str.split("");
 
temp = tempArray[leftIndex] ;
 
tempArray[leftIndex] = tempArray[i];
 
tempArray[i] = temp;
 
return (tempArray).join("");
 
}
 
// Function to print permutations of string
 
function findPermutations(str, leftIndex, rightIndex) {
 
if (leftIndex == rightIndex) {
 
document.write(str + "<br>");
 
} else {
 
for (let i = leftIndex; i <= rightIndex; i++) {
 
str = swap(str, leftIndex, i);
 
findPermutations(str, leftIndex+1, rightIndex);
 
//backtrack
 
str = swap(str, leftIndex, i);;
 
}
 
}
 
}
 
// Driver Code
 
var str1 = "MUO";
 
var size1 = str1.length;
 
document.write("str1: " + str1 + "<br>");
 
document.write("Permutations of " + str1 + ":" + "<br>");
 
findPermutations(str1, 0, size1-1);
 
var str2 = "AB";
 
var size2 = str2.length;
 
document.write("str2: " + str2 + "<br>");
 
document.write("Permutations of " + str2 + ":" + "<br>");
 
findPermutations(str2, 0, size2-1);
 
var str3 = "XYZ";
 
var size3 = str3.length;
 
document.write("str3: " + str3 + "<br>");
 
document.write("Permutations of " + str3 + ":" + "<br>");
 
findPermutations(str3, 0, size3-1);

Output:

str1: MUO
 
Permutations of MUO:
 
MUO
 
MOU
 
UMO
 
UOM
 
OUM
 
OMU
 
str2: AB
 
Permutations of AB:
 
AB
 
BA
 
str3: XYZ
 
Permutations of XYZ:
 
XYZ
 
XZY
 
YXZ
 
YZX
 
ZYX
 
ZXY

C Program to Print All Permutations of a String

Below is a C program that prints all permutations of a string:

// C program to print all
 
// permutations of a string
 
#include <stdio.h>
 
#include <string.h>
 
// Function to swap characters of the string
 
void swap(char str[], int leftIndex, int i)
 
{
 
char temp = str[leftIndex];
 
str[leftIndex] = str[i];
 
str[i] = temp;
 
}
 
// Function to print permutations of string
 
void findPermutations(char str[], int leftIndex, int rightIndex)
 
{
 
if (leftIndex == rightIndex)
 
{
 
printf("%s \⁠n", str);
 
}
 
else
 
{
 
for (int i = leftIndex; i <= rightIndex; i++)
 
{
 
swap(str, leftIndex, i);
 
findPermutations(str, leftIndex+1, rightIndex);
 
//backtrack
 
swap(str, leftIndex, i);
 
}
 
}
 
}
 
// Driver Code
 
int main()
 
{
 
char str1[] = "MUO";
 
int size1 = strlen(str1);
 
printf("str1: %s \⁠n", str1);
 
printf("Permutations of %s: \⁠n", str1);
 
findPermutations(str1, 0, size1-1);
 
char str2[] = "AB";
 
int size2 = strlen(str2);
 
printf("str2: %s \⁠n", str2);
 
printf("Permutations of %s: \⁠n", str2);
 
findPermutations(str2, 0, size2-1);
 
char str3[] = "XYZ";
 
int size3 = strlen(str3);
 
printf("str3: %s \⁠n", str3);
 
printf("Permutations of %s: \⁠n", str3);
 
findPermutations(str3, 0, size3-1);
 
return 0;
 
}

Output:

str1: MUO
 
Permutations of MUO:
 
MUO
 
MOU
 
UMO
 
UOM
 
OUM
 
OMU
 
str2: AB
 
Permutations of AB:
 
AB
 
BA
 
str3: XYZ
 
Permutations of XYZ:
 
XYZ
 
XZY
 
YXZ
 
YZX
 
ZYX
 
ZXY

In this article, we will explore the process of generating all permutations of a given string using various programming languages. Although the presented sample programs may not be the only solutions to tackle permutations, they serve as excellent starting points for beginners who are unfamiliar with implementing this concept in their code.

Read More Articles:

Find Factorial of Number

Program to Swap Two variables

Check whether given string is Palindrome or not

Program to Reverse a list

Convert Snake_Case to CamelCase

Print Fibonacci Series

Multiply List in Python

Sum of List in Python

0