/**
* 字符串全排列
* @author ConverseMe
*
*/
public class AllSortChar {
public static void allSort(char[] buf, int start, int end) {
if(start == end) { //当只要求对数组中一个字母进行全排列时,只要按该数组输出即可
for(int i = 0; i <= end; i ++) {
System.out.print(buf[i]);
}
System.out.println();
} else {
//多个字母全排列
for(int i = start; i <= end; i ++) {
char temp = buf[start]; //交换数组第一个元素与后续的元素
buf[start] = buf[i];
buf[i] = temp;
allSort(buf, start+1, end); //后续元素递归全排列
temp = buf[start]; //将交换后的数组还原
buf[start] = buf[i];
buf[i] = temp;
}
}
}
public static void main(String[] args) {
String test = "Tsinghua";
char[] chars = test.toCharArray();
allSort(chars, 0, chars.length - 1);
}
}