回溯
import java.util.ArrayList;
import java.util.*;
public class Solution {
public ArrayList<String> Permutation(String str) {
char[] c = str.toCharArray();
Arrays.sort(c);
str = String.valueOf(c);
ArrayList<String> res = new ArrayList<>();
StringBuilder sb = new StringBuilder();
boolean[] visited = new boolean[str.length()];
backTrack(str,res,sb,visited);
return res;
}
public void backTrack(String str,ArrayList<String> res,StringBuilder sb,boolean[] visited){
if(sb.length() == str.length()){
res.add(new String(sb.toString()));
}
for(int i = 0;i<str.length();i++){
if(visited[i]){
continue;
}
if(i>0&&str.charAt(i) == str.charAt(i-1)&&visited[i-1]==false){
continue;
}
sb.append(str.charAt(i));
visited[i] = true;
backTrack(str,res,sb,visited);
sb.deleteCharAt(sb.length()-1);
visited[i] = false;
}
}
}