public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
Choice(s,"");
}
static void Choice(String s,String p) {
if(s.length()<1){
System.out.println(p);
}else{
int index[]=new int[s.length()];
for(int i=0;i<s.length();i++){
index[i]=s.indexOf(s.charAt(i));
}
for(int i=0;i<s.length();i++){
if(i==index[i]){//只有当循环次数和第一次出现位置相等时才递归
Choice(s.substring(1),p+s.substring(0, 1));
}
s=s.substring(1)+s.substring(0,1);//循环移位,使每次都是在起始位置选择第一个
}
}
}
运行结果: