NO IMAGE

題目描述:

輸入一個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。

輸入描述:

輸入一個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。

又是一個被細節坑死的題目,好不容易解決了排列問題,然後發現順序不一樣。。。嗯,一定要記下來,以解我心頭之恨

import java.util.ArrayList;
import java.util.Collections;
public class Solution {
//被一個sort坑死在路上,還有要注意排除重複的元素
ArrayList<String> arrayList = new ArrayList<String>();
public ArrayList<String> Permutation(String str) {
char[] array = str.toCharArray();
reSort(array, 0, array.length-1);
Collections.sort(arrayList);
return arrayList;
}
public void reSort(char[] array, int start, int end){
if(start == end){
String temp =  String.valueOf(array);
if(!arrayList.contains(temp)){
arrayList.add(temp);
}
}else{
for(int j = start; j <= end; j  ){
swap1(array, j, start);
reSort(array, start 1, end);
swap1(array, j, start);
}
}
}
public void swap1(char[] array, int m, int n){
char temp = array[m];
array[m] = array[n];
array[n] = temp;
}
}