代码一
import java.util.List;
import java.util.Scanner;
import java.util.Vector;
public class Main {
public static List f(String s) {
List lis = new Vector();
if(s.length()==1) {
lis.add(s);
return lis;//递归的出口
}
for(int i=0;i<s.length();i++) {
char x = s.charAt(i);
List t = f(s.substring(0,i)+s.substring(i+1));
for(int k=0;k<t.size();k++) {
lis.add(""+x+t.get(k));
}
}
return lis;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String str = sc.next();
List lis = f(str);
for(int i=0;i<lis.size();i++) {
System.out.println(lis.get(i));//按位查找
}
}
}
代码二
import java.util.List;
import java.util.Scanner;
import java.util.Vector;
public class Main {
public static void f(char[]a, int k) {
if(k==a.length-1) {
System.out.println(String.valueOf(a));
return;
}
for(int i=k;i<a.length;i++) {
{char t = a[k];
a[k]=a[i];
a[i]=t;//试探
}
f(a,k+1);
{char t = a[k];
a[k]=a[i];
a[i]=t;//回溯
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String str = sc.next();
f(str.toCharArray(),0);
}
}