字符全排列java实现(转)

来源:互联网 发布:dnf决战人工智能6.2 编辑:程序博客网 时间:2024/05/29 05:52
public class Test1 {


public static String[] arr = { "1", "2", "3", "4", "5" };


public static StringBuffer aTotalString = new StringBuffer();// 总共的字符串


public static StringBuffer aTemp = new StringBuffer();// 当前串值


public static void main(String[] args) {
listString(arr.length + 1);
System.out.println("aTotalString=" + aTotalString);
}


/**
* 2.编程:用java语言实现一组数据的所有组合项.

* @param num
*/


public static void listString(int num) {
if (num == 1) {
for (int i = 0; i < arr.length; i++) {
aTemp.append(arr[i] + ";");
}
return;
} else {
listString(num - 1);
aTotalString.append(aTemp);
String[] tempArray = aTemp.toString().split(";");
aTemp.setLength(0);
for (int i = 0; i < tempArray.length; i++) {
for (int j = 0; j < arr.length; j++) {
if (check(tempArray[i], arr[j])) {
aTemp.append(tempArray[i] + arr[j] + ";");
}
}
}
}


}


/**
* 验证是否是重复的字段,例:13,3则是false, 13,4 则是true;

* @param value
* @param letter
* @return
*/
public static boolean check(String value, String letter) {
for (int i = 0; i < value.length(); i++) {
if (value.substring(i, i + 1).equals(letter)) {
return false;
}
}
return true;
}


}




转自:http://virture.iteye.com/blog/384026