Open In App
Related Articles

Print all the permutations of a string without repetition using Collections in Java

Improve Article
Improve
Save Article
Save
Like Article
Like

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:




// Java implementation of the approach
import java.util.*;
public class GFG {
  
    static Set<String> hash_Set = new HashSet<>();
  
    // Recursive function to generate
    // permutations of the string
    static void Permutation(String str, String ans)
    {
  
        // If string is empty
        if (str.length() == 0) {
  
            // Add the generated permutation to the
            // set in order to avoid duplicates
            hash_Set.add(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 ros = str.substring(0, i)
                         + str.substring(i + 1);
  
            // Recurvise call
            Permutation(ros, ans + ch);
        }
    }
  
    // Driver code
    public static void main(String[] args)
    {
        String s = "ab";
  
        // Generate permutations
        Permutation(s, "");
  
        // Print the generated permutations
        hash_Set.forEach((n) -> System.out.println(n));
    }
}


Output:

ab
ba

Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!

Last Updated : 03 Sep, 2019
Like Article
Save Article
Previous
Next
Similar Reads
Complete Tutorials