題目:輸入一個字符串,打印出該字符串中字符的所有排列。例如輸入字符串abc,則打印出由字符a、b、c所能排列出來的所有字符串abc、acb、bac、bca、cab和cba。
給出解決思路及所用算法
源碼:
@Test
public void test(){
//char[] cs = {'a','b','c','d','e'};char[] cs = {'a','b','c'};
int length = cs.length;
recursionSwap(cs,0,length);
}
public void swap(char[] cs,int index1,int index2){
char temp = cs[index1];cs[index1]=cs[index2];
cs[index2]=temp;
}
public void recursionSwap(char[] cs,int start,int length){
if(start>=length-1){print(cs);
return;}
for(int i=start;i<length;i++){swap(cs,start,i);
recursionSwap(cs,start+1,length);
swap(cs,start,i);
}
}
public void print(char[] cs){
for(int i=0;i<cs.length;i++){System.out.print(cs[i]);
}
System.out.println();
}
相關推薦
推薦中...