字符串全排列

来源:互联网 发布:hao123网络连接错误 编辑:程序博客网 时间:2024/06/10 00:47
package Suanfa;
import java.util.Scanner;
/**字符串的全排列:
 * 输入一个字符串:按字典顺序打印出该字符串中字符的所有排列:
 * 例如:输入abc,则打印出a,b,c所能排列出来的所有字符串abc,acb,
 * bac,bca,cab,cba,结果按字母的顺序输出:
 * 使用递归的思想:把需要全排列的字符串分为两部分看待:求出所有可能出现的第一个位置的字符,将第一个字符和后面的字符
 * 一次交换,固定第一个字符,对第一个字符后面的所有的字符求全排列。。。。
 * */
public class Permutations {
 public static String permutations(String src,int begin){
 StringBuffer sb = new StringBuffer();
 if(begin==src.length()-1){//只剩下一个字符
 return src;
 }
 for(int i=begin;i<src.length();i++){
 src=swap(src,begin,i);
 String str=permutations(src, begin+1);
 sb.append(str+" ");
 }
 return sb.toString().trim();
 }
     public static String swap(String src,int i,int j){
    char[] cs=src.toCharArray();
    char ch=cs[i];
    cs[i]=cs[j];
    cs[j]=ch;
    String str=new String();
    for(int ii=0;ii<cs.length;ii++){
    str+=cs[ii];
    }
    return str;
     }
     public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
System.out.println(permutations(str, 0));

}
}