字符串的全排列JAVA实现

java

package com.kpp;

/**

* 求字符串的全排列

* 递归的思想

* 比如 abcde 先求出abcd的全排列,然后将e分别插入全排列的5个位置

* a 全排列 a

* ab 全排列 ab ba

* abd 全排列即是 cab acb abc cba bca bac

*

* @author kpp

*

*/

public class QuanPaiLie {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

String str = "abcde";

//System.out.println(str.substring(0, 2));

String[] rs = getQuanPaiLie(str);

if(rs != null){

int count = 0;

for(int i = 0;i < rs.length;i++){

if(rs[i]!=null){

System.out.println(rs[i]);

count++;

}

}

System.out.println("count: "+count);

}

}

/**

* 求一个字符串的全排列

* @param str

* @return

*/

public static String[] getQuanPaiLie(String str){

String[] rs = new String[1000];

if(str == null||str.isEmpty()){

return null;

}

int strLen = str.length();

if(strLen == 1){

rs[0] = str;

}else if(strLen == 2){

rs[0] = str;

rs[1] = ""+str.charAt(1)+str.charAt(0);

}else if(strLen > 2){

char c = str.charAt(strLen-1);

String strBefore = str.substring(0,strLen-1);

String[] tmpRsArr = getQuanPaiLie(strBefore);

int count = 0;

for(int i = 0;i < tmpRsArr.length;i++){

String tmpRs = tmpRsArr[i];

if(tmpRs != null){

for(int k = 0;k < tmpRs.length()+1;k++){

rs[count++] = tmpRs.substring(0,k)+c+tmpRs.substring(k,tmpRs.length());

}

}

}

}

return rs;

}

}

 

以上是 字符串的全排列JAVA实现 的全部内容, 来源链接: utcz.com/z/395130.html

回到顶部