classSolution{List<String> res =newLinkedList<>();char[] c;publicString[]permutation(String s){
c = s.toCharArray();dfs(0);return res.toArray(newString[0]);}publicvoiddfs(int x){if(x==c.length-1){
res.add(String.valueOf(c));return;}HashSet<Character> set =newHashSet<>();for(int i=x;i<c.length;i++){//字符串是 aab的情况//这里是确保,第 x 个位置如果是 a,那么如果 set 中有它,说明第 x 位置是 a 的排列已经有了,不需要再排列一次if(set.contains(c[i])){continue;}
set.add(c[i]);swap(c,i,x);dfs(x+1);swap(c,i,x);}}publicvoidswap(char[] c,int i,int j){char tmp = c[i];
c[i]= c[j];
c[j]= tmp;}}