// For a given string, generate all anagrams of it, i.e. all possible combinations of // the characters that this string consists of. import java.util.Scanner; class RecExample1 { public static void main (String[] args) { Scanner scan = new Scanner(System.in); System.out.println(); System.out.print ("Enter a string: "); System.out.flush(); MyAnagram s = new MyAnagram (scan.nextLine()); System.out.println(); System.out.println ("Here are all possible combinations of the characters in " + s.toString()); System.out.println (); s.get_anagram(); } } class MyAnagram { String list; public MyAnagram (String s) { list = s; } public void get_anagram () { rotate ("", list); } private void rotate (String car, String cdr) { String newcar, newcdr; int num = cdr.length(); if (num == 1) System.out.println (car + cdr); else { for (int i = 1; i <= num; i++) { newcdr = cdr.substring(1, num); newcar = car + cdr.charAt(0); rotate (newcar, newcdr); cdr = newcdr + cdr.charAt(0); } } } public String toString () { return list; } }