/**
* @author wang:
* @version 创建时间:2016年10月24日 下午9:38:35
* 算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。
* 如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。
*/
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
List<Character> lists = norepeat(str);//去除重复
pailie(lists, "");
}
//首先去除重复
public static List<Character> norepeat(String str){
char[] chars = str.toCharArray();
List<Character> lists = new ArrayList<>();
for(char j : chars){
if(Collections.frequency(lists, j) < 1) lists.add(j);
}
return lists;
}
//递归排列
public static void pailie(List<Character> lists,String out){
if(lists.isEmpty()) System.out.println(out);
for(int i=0;i<lists.size();i++){
List<Character> temp = new LinkedList<>(lists);
pailie(temp, out+temp.remove(i));
}
}
}