使用递归进行操作,如下代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class TotalPermutation
{
private static int size;
private static int count;
private static char[] ch;
public static void main(String[] args)
{
String str = "abc";
size = str.length();
ch = new char[size];
for(int i=0; i<str.length(); i++)
ch[i] = str.charAt(i);
Anagram(size);
}
public static void Anagram(int size)
{
if(size == 1)
return;
for(int i=0; i<size; i++)
{
Anagram(size-1);
if(size == 2)
Display();
Rotate(size);
}
}
public static void Rotate(int current)
{
int pos = size - current;
char temp = ch[pos];
for(int i=pos+1; i<size; i++)
ch[i-1] = ch[i];
ch[size-1] = temp;
}
public static void Display()
{
count++;
System.out.print(count + " ");
for(int i=0; i<size; i++)
System.out.print(ch[i]);
System.out.println();
}
}
输出为:
1 abc
2 acb
3 bca
4 bac
5 cab
6 cba