快速业务通道

用java写一个main函数,打印出1-6这这六个数字的所有不同的排列 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

用java写一个main函数,打印出1-6这这六个数字的所有不同的排列

时间:2011-10-28 blogjava.net SIMONE

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());
    }
}

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号