1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列, 如:512234、412345等.要求:"4"不能在第三位,"3"与"5"不能相连.
package com.test; import java.util.ArrayList; import java.util.List; /** * 1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列, 如:512234、412345等.要求:"4"不能在第三位,"3"与"5"不能相连. * * @author SIMONE wangxinsh55@126.com 2009-6-12 */ public class GroupTest { public static List<String> list = new ArrayList<String>(); /** * 构造字符串的所有排序组合 * * @param str 将要组合成的字符 * @param nstr 源字符串集 */ 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) {// 过滤显示条件,如果去掉此处的判断,就是列出所有字符集的排列组合 System.out.println(temp); if (!list.contains(temp)) { list.add(temp); } group(temp, nstr); } } } } /** * 从源字符串集中去除将要组合成的字符 * * @param str 将要组合成的字符 * @param nstr 源字符串集 * @return 剩余字符串集 */ 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; } public static void main(String[] args) { group("", "122345"); System.out.println(list.toString()); } }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索rest
, string
, 字符串
, str
, length
, temp
, java 排列组合
, replaceFirst
, 数字打印
, java中length函数
, java中的main函数
组合成字符串
数字排列组合生成器、数字排列组合软件、四个数字排列组合、数字排列、4个数字排列组合,以便于您获取更多的相关知识。
时间: 2024-08-08 06:01:11