|
<p >package com.test;<p > import Java.util.ArrayList;<p > import java.util.List;<p > /**<p > * 1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列, 如:512234、412345等.要求:"4"不能在第三位,"3"与"5"不能相连.<p > *<p > * @author SIMONE wangxinsh55@126.com 2009-6-12<p > */<p > public class GroupTest {<p > public static List list = new ArrayList();<p > /**<p > * 构造字符串的所有排序组合<p > *<p > * @param str 将要组合成的字符<p > * @param nstr 源字符串集<p > */<p > public static void group(String str, String nstr) {<p > if (str.length() != nstr.length()) {<p > String rest = getRest(str, nstr);<p > for (int i = 0; i < rest.length(); i++) {<p > String temp = str + rest.substring(i, i + 1);<p > if (temp.indexOf("4") != 2 && temp.indexOf("35") == -1 && temp.indexOf("53") == -1) {// 过滤显示条件,如果去掉此处的判断,就是列出所有字符集的排列组合<p > System.out.println(temp);<p > if (!list.contains(temp)) {<p > list.add(temp);<p > }<p > group(temp, nstr);<p > }<p > }<p > }<p > }<p > /**<p > * 从源字符串集中去除将要组合成的字符<p > *<p > * @param str 将要组合成的字符<p > * @param nstr 源字符串集<p > * @return 剩余字符串集<p > */<p > public static String getRest(String str, String nstr) {<p > String rest = "";<p > if (nstr.length() > str.length()) {<p > rest = nstr;<p > for (int i = 0; i < str.length(); i++) {<p > rest = rest.replaceFirst(str.substring(i, i + 1), "");// 注意此处的replaceFirst,而不是replaceAll<p > }<p > }<p > return rest;<p > }<p > public static void main(String[] args) {<p > group("", "122345");<p > System.out.println(list.toString());<p > }<p > }<p ><p >< align=right></P><p align="center"></p></p> |
|