题目:如何求一个字符串的所有排列
要求:实现一个方法,当输入一个字符串时,要求输出这个字符串的所有排列
例如,输入abc,则abc,acb,bac,bca,cab.cba
第一种方法:递归
/*
* 如何求一个字符串的所有排列
* 实现一个方法,当输入一个字符串时,要求输出这个字符串的所有排列
* 例如,输入abc,则abc,acb,bac,bca,cab.cba*/
/*
使用递归方法,不断调用自己,但递归一定要有结束条件
*/
public class PermutationTest {
/*交换字符数组*/
public static void swap(char[]str,int i ,int j){
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
public static void Permutation(char[]str,int start){
if(str==null || start<0)
return;
//完成全排列后输出当前排列的字符串
if (start==str.length-1)
System.out.println(str);
else{
for (int i =start;i<str.length;i++){
//交换
swap(str,start,i);
//固定第一个字符,对剩余的字符进行全排列
Permutation(str,start+1);
//还原
swap(str,start,i);
}
}
}
public static void Permutation(String s ){
char[] str = s.toCharArray();//字符串转为数组
Permutation(str,0);
}
public static void main(String[] args) {
String s = "abc";
Permutation(s);
}
}