53.字符串的排列(字符串)。
题目:输入一个字符串,打印出该字符串中字符的所有排列。
例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串
abc、acb、bac、bca、cab和cba。
package com.algorithm.interview;
import java.util.ArrayList;
public class Premutation {
// char[] res;
ArrayList ls = new ArrayList();
public void place(char[] arr, int start){
if(start == arr.length - 1){
ls.add(arr[start]);
for(int j = 0; j< ls.size(); j++){
System.out.print(ls.get(j)+",");
}
System.out.println();
ls.remove(ls.size() - 1);
}
for(int i = 0; i + start < arr.length; i++){
swap(arr,start,start+i);
ls.add(arr[start]);
place(arr, start+1);
ls.remove(ls.size() - 1);
this.swap(arr, start, start+i);
}
}
public void swap(char[] arr, int i, int j){
char temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Premutation prem = new Premutation();
char[] arr = {'a','b','c'};
prem.place(arr, 0);
}
}