String Permutations in Java

Generate all permutations of a string using recursion.

AdvancedModule 4: String ProgramsExample 25 of 25
string-permutations.java
1import java.util.Scanner;
2
3public class Main {
4 private static void permute(String s, String prefix) {
5 if (s.isEmpty()) {
6 System.out.println(prefix);
7 return;
8 }
9 for (int i = 0; i < s.length(); i++) {
10 char c = s.charAt(i);
11 String rem = s.substring(0, i) + s.substring(i + 1);
12 permute(rem, prefix + c);
13 }
14 }
15
16 public static void main(String[] args) {
17 Scanner sc = new Scanner(System.in);
18 System.out.print("Enter a string: ");
19 String s = sc.nextLine();
20
21 permute(s, "");
22 sc.close();
23 }
24}

Output

Enter a string: abc
abc
acb
bac
bca
cab
cba

What's going on

We recursively fix one character at a time and permute the rest.