import java.util.*;

public class Solution {

//这是一道递归排列组合的题目,要求就是组合的字符不能重复
public String KthPermutation (int n, int k) {
    // write code here
    boolean[] isUsed = new boolean[n];
    StringBuilder stringBuilder = new StringBuilder();
    ArrayList<ArrayList<Integer>> arrayLists = new ArrayList<>();
    LinkedList<Integer> linkedList = new LinkedList<>();
    ArrayList<Integer> list = new ArrayList<>();
    for (int i = 1; i <= n; i++) {
        list.add(i);
    }
    computeArray(n,list,linkedList,arrayLists,0,isUsed);
    list = arrayLists.get(k-1);
    for (Integer integer : list) {
        stringBuilder.append(integer);
    }
    return stringBuilder.toString();
}

private void computeArray(int length, ArrayList<Integer> list, LinkedList<Integer> linkedList, ArrayList<ArrayList<Integer>> arrayLists,int depth,boolean[] isUsed) {
    if(depth==length){
        arrayLists.add(new ArrayList<>(linkedList));
        return;
    }
    for (int j = 0; j < list.size(); j++) {
        if(isUsed[j]){
            continue;
        }
        if(j>0&&list.get(j).equals(list.get(j-1))&&!isUsed[j-1]){
            continue;
        }
        linkedList.add(list.get(j));
        isUsed[j]=true;
        computeArray(length,list,linkedList,arrayLists,depth+1,isUsed);
        linkedList.removeLast();
        isUsed[j]=false;
    }
}

}