需要注意是恢复(回溯回去)。
public class Main {
public static void main(String[] args) {
String s = "ABC";
permutation(0,s.length()-1,s.toCharArray());
}
private static void permutation(int left, int right, char[] c) {
if(left == right){
System.out.println(new String(c));
}
for (int i = left; i <= right ; i++) {
swap(c,i,left);
permutation(left+1,right,c);
swap(c,i,left);
}
}
private static void swap(char[] c, int left, int right) {
char temp = c[left];
c[left] = c[right];
c[right] = temp;
}
}