public ArrayList<String> getPermutation(String A) {
// write code here
ArrayList<String> res = new ArrayList<>();
if(A == null || A.length() == 0) return res;
char[] chs = A.toCharArray();
dfs(chs, 0 , res);
Collections.sort(res);
Collections.reverse(res);
return res;
}
public void dfs(char[] chs, int start, ArrayList<String> res){
if(start == chs.length){
res.add(new String(chs));
}
for(int i = start ; i < chs.length; i ++){
swap(chs, i , start);
dfs(chs, start + 1, res);
swap(chs, i , start);
}
}
public void swap(char[] arr , int i , int j ){
char tem = arr[i];
arr[i] = arr[j];
arr[j] = tem;
}