package leetcode;
import java.util.ArrayList;
import java.util.Arrays;
public class offer_38 {
public String[] permutation(String s) {
//将字符串转换成数组并排序
char[] ch= s.toCharArray();
Arrays.sort(ch);
int[] visited=new int[ch.length];
ArrayList<String> array=new ArrayList<String>();
backtrace(ch, new StringBuffer(), array, visited);
String[] ss=new String[array.size()];
for (int i = 0; i < ss.length; i++) {
ss[i]=array.get(i);
}
System.out.println(array);
return ss;
}
public void backtrace(char[] ch,StringBuffer sb,ArrayList<String> array,int[] visited) {
if(sb.length()==ch.length) {
array.add(sb.toString());
}
else {
for(int i=0;i<ch.length;i++) {
if(visited[i]!=0) {continue;}
//去除重复
if(i>0&&ch[i]==ch[i-1]&&visited[i-1]==0) {continue;}
visited[i]=1;
sb.append(ch[i]);
backtrace(ch, sb, array, visited);
visited[i]=0;
sb.deleteCharAt(sb.length()-1);
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
offer_38 off=new offer_38();
off.permutation("abc");
}
}