這道Java面試算法題能做出來的不是一般的程序猿,來試下看看

編程語言 技術 進擊的程序猿 2017-07-18

題目:輸入一個字符串,打印出該字符串中字符的所有排列。例如輸入字符串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();

}

相關推薦

推薦中...