как подсчитать все возможные анаграммы в программировании на Java

я хочу подсчитать все возможные анаграммы входных слов я хочу добавить счетчик, который подсчитывает все анаграммы

напр. на ферме строк есть 28 возможных анаграмм, я хочу этот вывод

Введите строку: абв

вот все анаграммы: abc

abc acb bac bca cba кабина

Строка "abc" имеет 6 возможных анаграмм

"это код"

  import java.util.Scanner; 
  public class Anagrams1 { 

  public static void main (String args[]) { 

  Scanner r = new Scanner(System.in);  

  System.out.print("Enter a string:"); 
  String s = r.next(); 


  char[] text = new char[s.length()]; 
  for (int i=0; i<s.length(); i++) 
  text[i] = s.charAt(i); 

  System.out.println("Here are all the anagrams of " + s); 
  makeAnagram(text,0); 
  System.out.println("Goodbye!"); 


  } 
   static void makeAnagram(char[] a, int i) { 


    if (i == a.length-1) { 

    printArray(a); 

  } 
  else { 
  for (int j=i; j< a.length; j++) { 

  char c = a[i]; 
  a[i] = a[j]; 
  a[j] = c; 

  makeAnagram(a, i+1); 


  c = a[i]; 
  a[i] = a[j]; 
  a[j] = c; 


   } 
 } 
 }  


  static void printArray(char [] a) 
 { 

 for (int i=0; i< a.length; i++) 
 System.out.print(a[i]); 
   System.out.println(); 

  } 

}

person Volkswagen    schedule 09.12.2013    source источник
comment
Вы просто хотите их посчитать или еще и вывести? Потому что первое проще. Кстати, у farm их 4! = 24, а не 28.   -  person CompuChip    schedule 09.12.2013


Ответы (1)


Если вы подсчитываете количество анаграмм ввода str, число равно factorial(str.length()), где

public static final int factorial(int base) {
    return (base == 1) ? (1) : (factorial(base - 1));
}
person hyper-neutrino    schedule 25.05.2015