Print all the permutations of a string without repetition using Collections in Java
Given a string str, the task is to print all the permutations of str. A permutation is an arrangement of all or part of a set of objects, with regard to the order of the arrangement. A permutation should not have repeated strings in the output.
Examples:
Input: str = “aa”
Output:
aa
Note that “aa” will be printed only once
as duplicates are not allowed.
Input: str = “ab”
Output:
ab
ba
Approach: Write a recursive function that removes a character one by one from the original string and generates a new string by appending these removed characters. The base condition will be when all the characters have been used. In that case, insert the generated string (a permutation of the original string) in a set in order to avoid duplicates.
Below is the implementation of the above approach:
import java.util.*;
public class GFG {
static Set<String> hash_Set = new HashSet<>();
static void Permutation(String str, String ans)
{
if (str.length() == 0 ) {
hash_Set.add(ans);
return ;
}
for ( int i = 0 ; i < str.length(); i++) {
char ch = str.charAt(i);
String ros = str.substring( 0 , i)
+ str.substring(i + 1 );
Permutation(ros, ans + ch);
}
}
public static void main(String[] args)
{
String s = "ab" ;
Permutation(s, "" );
hash_Set.forEach((n) -> System.out.println(n));
}
}
|
Last Updated :
03 Sep, 2019
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...