Print All Permutations of a String in Java
Print All Permutations of a String in Java
Given a string str, the task is to print all of str permutations. A permutation is an arrangement of all or part of a set of objects in the order in which they are arranged. For example, the words ‘bat’ and ‘tab’ are two different permutations (or arrangements) of a similar three-letter word.
Example :
- Input : ABC
- Output : ABC ACB BCA BAC CAB CBA
Method 1(Using Recursion) :
- Create a recursive function say printPermute(string s, int l, int r), and pass string along with starting index of the string and the ending index of the string.
- Base condition will be if(l==r) then print the s.
- Otherwise, run a loop from [l, r]
- And, swap(s[l], s[i])
- Call printPermute(s, l+1, r) function
- And again swap(s[l], s[i]) to backtrack.
Code to print All Permutations of a String in Java
Run
public
class Main {
// Function to print all the permutations of str
static void printPermutn(String str, String ans) {
// If string is empty
if (str.length() == 0) {
System.out.print(ans + " ");
return;
}
for (int i = 0; i < str.length(); i++) {
// ith character of str
char ch = str.charAt(i);
// Rest of the string after excluding the ith character
String r = str.substring(0, i) + str.substring(i + 1);
// Recurvise call
printPermutn(r, ans + ch);
}
}
// Driver code
public
static void main(String[] args) {
String s = "abb";
printPermutn(s, "");
}
}
Output :
ABC ACB BCA BAC CAB CBA
Method 2
Create a recursive function that prints out different permutations. Create a boolean array of size ’26’ that accounts for the character that is being used. The recursive call will be made if the character has not been used. Otherwise, don’t make any call. When the passed string is empty, the programme will terminate.
Run
public class Main {
static void printDistinctPermutn(String str, String ans) {
// If string is empty
if (str.length() == 0) {
// print ans
System.out.print(ans + " ");
return;
}
// Make a boolean array of size '26' which stores false by default and make true
// at the position which alphabet is being used
boolean alpha[] = new boolean[26];
for (int i = 0; i < str.length(); i++) {
// ith character of str
char ch = str.charAt(i);
// Rest of the string after excluding
// the ith character
String ro = str.substring(0, i) + str.substring(i + 1);
if (alpha[ch - 'a'] == false)
printDistinctPermutn(ro, ans + ch);
alpha[ch - 'a'] = true;
}
}
// Driver code
public
static void main(String[] args) {
String s = "abc";
printDistinctPermutn(s, "");
}
}
Output
abc acb bac bca cab cba
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription

python code:
def perm(l,ln,c,d):
if c==(ln-1):
l.sort()
return l
else:
li=[]
for i in l:
k,j=c,d
while c!=ln:
str1=list(map(str,i))
temp=str1[d]
str1[d]=str1[c]
str1[c]=temp
li.append(“”.join(str1))
c+=1
c,d=k,j
del l
return perm(li,ln,c+1,d+1)
strr=input()
l=[strr]
for i in perm(l,len(strr),c=0,d=0):
print(i,” “,end=””)
Hey !! You can Join Here for your technical querries.
public static ArrayList permutation(String p, String up){
if (up.isEmpty()){
ArrayList list = new ArrayList();
list.add(p);
return list;
}
char ch = up.charAt(0);
ArrayList ans = new ArrayList();
for (int i = 0; i <= p.length(); i++) {
String f = p.substring(0,i);
String s = p.substring(i,p.length());
ans.addAll(permutation(f+ch+s, up.substring(1)));
}
return ans;
}
please take p = "" in function