12345這五個數,列印出它所有的組合。4不能在中間,3和5不能挨著(實現二)

iteye_9089發表於2020-04-07
public class TestNumber {

/**
*
* @param args
*/

public static List list = new ArrayList();

public static void main(String[] args) {
group("", "12345");
System.out.println(list.size());
}

public static void group(String str, String nstr) {
if (str.length() != nstr.length()) {
String rest = getRest(str, nstr);
for (int i = 0; i < rest.length(); i++) {
String temp = str + rest.substring(i, i + 1);
if (temp.indexOf("4") != 2 && temp.indexOf("35") == -1
&& temp.indexOf("53") == -1) {// 過濾顯示條件,如果去掉此處的判斷,就是列出所有字符集的排列組合
if (temp.length() > 4) {
System.out.println(temp);
if (!list.contains(temp)) {
list.add(temp);
}
}

group(temp, nstr);
}
}
}
}

public static String getRest(String str, String nstr) {
String rest = "";
if (nstr.length() > str.length()) {
rest = nstr;
for (int i = 0; i < str.length(); i++) {
rest = rest.replaceFirst(str.substring(i, i + 1), "");// 注意此處的replaceFirst,而不是replaceAll
}
}
return rest;
}

}

相關文章