目标:一个字符串s
我们可以分别把s的每个字母作为开头,把其他字符串全排列一下,拼接而成就是全排列。
import java.util.List;
import java.util.Vector;
public class L4_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("全排列:");
List lst = f("ABC");
for (int i = 0; i < lst.size(); i++) {
System.out.println(lst.get(i));
}
}
public static List f(String s) {
List lst = new Vector<>();
if (s.length() == 1) {
lst.add(s);
return lst;
}
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
List t = f(s.substring(0, i) + s.substring(i + 1, s.length()));
for (int k = 0; k < t.size(); k++) {
lst.add("" + c + t.get(k));
}
}
return lst;
}
}
第二种:
public class L7 {
static char[] a = "ABC".toCharArray();
public static void main(String[] args) {
// TODO Auto-generated method stub
f(0);
}
static void f(int pos) {
if (pos == a.length) {
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
return;
}
for (int i = pos; i < a.length; i++) {
char t = a[i];
a[i] = a[pos];
a[pos] = t;
f(pos + 1);
t = a[i];
a[i] = a[pos];
a[pos] = t;
}
}
}