`
piaohai
  • 浏览: 8448 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

java 字符数字组合算法

阅读更多

从指定集合中获取元素组合成不同的字符串.

 

  • 组合生成类(Combination.java)

 

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

 

/**

 * 

 * @author hymanz 506600909@qq.com

 *

 */

public class Combination {

 

    private char[] base;

 

    public Combination(char[] base) {

        this.base = base;

    }

 

    public List<char[]> getCombinations(int length) {

 

        List<char[]> list = new ArrayList<char[]>();

        list.add(new char[length]);

 

        return compose(0, list);

    }

 

    private List<char[]> compose(int index, List<char[]> list) {

 

        if (index >= list.get(0).length) {

            return list;

        }

 

        for (int i = 0, size = list.size(); i < size; i++) {

            char[] item = list.get(i);

            for (int j = 0; j < base.length; j++) {

                if (j > 0) {

                    item = copy(item);

                    list.add(item);

                }

                item[index] = base[j];

            }

        }

 

        return compose(++index, list);

    }

 

    private char[] copy(char[] item) {

        return Arrays.copyOf(item, item.length);

    }

 

}

 

  • 调用方式 

public class Main {

    public static void main(String[] args) {

        char[] base = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};

        

        Combination combination = new Combination(base);

        List<char[]> result = combination.getCombinations(3);

        

        for (char[] cs : result) {

            System.out.println( new String(cs));

        }

    }

}

 

 

 

 

1
1
分享到:
评论

相关推荐

    Java 字母数字字符串 混合排序(绝对超值管用)

    List&lt;String&gt; location=new ArrayList(); 一行代码轻松搞定混合排序问题 Collections.sort(location, new SortUtils(true));

    Java实现字符数组全排列的方法

    在实际编程中,全排列的算法不仅适用于字符数组,还可以应用于数字数组或其他可比较类型的数组,为解决各种排列组合问题提供基础。理解并掌握这种算法,对于提升Java编程能力,特别是在处理复杂问题时,是非常有帮助...

    java自定义加密算法

    本文将详细介绍一个Java实现的自定义加密算法案例,该算法通过组合数字、小写字母、大写字母以及特殊字符来生成加密字符串,并采用随机打乱顺序及添加校验和的方式来增强其安全性。 #### 二、加密算法核心逻辑 1. ...

    汉字和数字混合排序

    由于汉字与数字在数据结构和编码上的本质差异,混合排序需要特定的算法和技术来实现。以下将详细介绍汉字和数字混合排序的相关知识点。 首先,我们要了解汉字和数字在计算机中的存储方式。汉字通常使用Unicode编码...

    Java经典算法源码实例(Java算法,源码)

    这个名为“Java经典算法源码实例”的资源集合提供了一系列用Java语言实现的常见算法,对于深入理解算法原理、提高编程技能以及优化代码性能具有极大的帮助。下面,我们将详细探讨这些算法及其应用。 1. **排序算法*...

    java国密sm3算法

    在使用这个JavaScript版的SM3算法时,开发者可以首先使用`parse`方法处理输入的字符串,将其转化为适合算法处理的数据格式。接着调用SM3核心函数进行散列计算,最后可能使用`stringify`方法将得到的散列值转化为可读...

    维吉尼亚加密算法的JAVA实现

    这种加密算法因其复杂性和在当时的安全性而受到赞誉,它通过使用多个凯撒密码(每个字母按固定位数偏移)的组合来构建一个可变的密钥表,使得加密过程更为复杂,难以破解。 在Java中实现维吉尼亚加密算法,我们需要...

    java 实现的中文分词算法(代码)

    同时,Java的字符串操作函数,如`substring()`和`indexOf()`,会在分词算法中起到关键作用。 在压缩包中的“FMM”文件可能是实现了FMM算法的Java源代码,可能包括类定义、方法实现以及测试用例。阅读这些代码有助于...

    java对字符和数字进行排列的算法源码--TryBoth

    System.out.println("对字符数组进行部分排列;A(4,3)"); String str="abc"; char[] chArray=str.toCharArray(); Arrange strArrange=new Arrange(chArray.length); while(strArrange.hasMore()){ ...

    基于惯性大水滴滴水算法和支持向量机的粘连字符验证码识别

    在数字图像处理中,它可以用来分割粘连在一起的字符,因为字符间的边界可以通过模拟水滴的流动和分离来界定。这种算法通过模拟水滴的运动和聚集,可以有效地识别和分离图像中的各个独立元素,即使这些元素在图像中...

    算符优先算法(Java)

    在Java中,我们可以利用这种算法来实现一个自定义的解析器,用于处理复杂的计算任务或者解析特定的语法结构。 算符优先算法的核心思想是使用一个算符优先表,这个表定义了每个运算符的优先级和结合性。运算符的...

    遗传算法JAVA程序

    这种算法通常用于找到一组解决方案(称为“个体”或“染色体”)中的最优解,这些解决方案可以是数字、字符串或其他复杂结构。 Java作为一种多平台支持的编程语言,提供了丰富的库和工具来实现遗传算法。在"遗传...

    LSB.zip_Java实现lsb_LSB的java_LSB算法JAVA实现_java实现LSB算法_java实现信息LSB

    5. **提取信息**: 对隐藏了信息的图像,重复上述过程,但这次是读取像素的LSB并组合成二进制字符串,再将其转换回文本。 **Java实现注意事项** - 图像格式:不同的图像格式可能会影响LSB算法的效果。例如,JPEG...

    java算法练习试题

    【程序 11】这道题要求生成没有重复数字的三位数组合。可以使用三重循环,依次填充百位、十位和个位,排除重复数字。 【程序 12】奖金提成问题需要根据利润范围设定不同的提成比例。可以创建一个分段函数,根据输入...

    基于Java语言实现公钥古典加密算法

    2. **密钥设计**:密钥为UTF-8编码的文本文件,长度可自定义,至少8位,最多65535位,由数字和字母组合而成。密钥与算法分离,增强了系统的安全性。 3. **串号计算**:串号是基于密钥通过特定数学运算得出的无意义...

    java 算法经典题

    根据给定的文件信息,我们可以总结出以下几个Java算法的经典题目及其相关知识点: ### 1. 输出九九乘法表 这段代码实现了一个简单的九九乘法表的输出功能。通过两个嵌套的for循环,实现了从1×1到9×9的所有乘法...

    lzw压缩算法java实现

    它们组合成第一个基本字符串,如果字典中没有这个字符串,就将它添加到字典中,当前前缀写入代码流,当前码作为新的当前前缀。接着,读取下一个字符作为新的当前码,以此类推。如果在字典中找到了当前前缀和当前码...

    java常用几种加密算法

    **简介**:MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,能够将任意长度的数据转换成一个固定长度(通常为128位)的十六进制数字字符串。这种转换过程是不可逆的,即无法从散列值恢复原始数据。因此...

    TN--秘密共享算法下载 Java实现

    这些份额可以是数字、字符或其他形式的数据。只有当一定数量的份额集合在一起时,才能重新组合出原始的秘密。这种技术在分布式系统、密码学和数据保护中具有广泛应用。 **Shamir门限秘密共享算法**是由Adi Shamir在...

Global site tag (gtag.js) - Google Analytics