去重复的(重复的排列按一种)
代码片
.
import java.util.*;
public class Main{
public static void main(String []args){
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
char []c=s.toCharArray();
Arrays.sort(c);
ArrayList <String >list=new ArrayList();
int index =0;
help(list,index,c);
Collections.sort(list);
System.out.print("[");
for(int i = 0 ; i<list.size()-1;i++){
System.out.print(list.get(i)+", ");
}
System.out.print(list.get(list.size()-1)+"]");
}
public static void swap(int i,int index,char[]c){
char temp=c[i];
c[i]=c[index];
c[index]=temp;
}
public static void help(ArrayList<String> list,int index,char[]c){
if(index==c.length-1)
list.add(new String(c));
for(int i=index;i<c.length;i++){
if(i==index||c[index]!=c[i])
{
swap(i,index,c);
help(list,index+1,c);
swap(i,index,c);
}
}
}
}
输出
.
输入:acc
输出:[acc, cac, cca]