大家知道 java 通用组合算法吗? 存在一个类似 {31311133,33113330} 这样的集合,经过 8 取 5 组合,其他位置用非字母数字字符替代,比如使用 * 号,得到类似{3***1133,***13330,... ...}这样的集合;
还要求对于 {3***1133,***13330} 这样的集合,再次经过 5 取 3 组合,其他位置用非字母数字字符替代,比如使用 * 号,得到类似{*****133,*****330,3***1*3*,... ...}这样的集合。
对于这样的要求,实现的思路如下:
首先,主要思想是基于信息编码原理,通过扫描字符串,将 10 组合变为 01 组合。
其次,对于每个数字字符串,设置一个单线程,在单线程类中设置一个 List 用来存放待处理数字字符串(可能含有 * 号,或者不含有)中每个数字的(而非 * 号)索引位置值;
再次,设置 BitSet 来标志每个位置是否被 * 号替换得到新的组合字符串。
最后,在扫描原始待处理数字字符串的过程中,根据设置的字符列表 List 中索引,来操作 BitSet,对于每一个 BitSet 得到一个新的组合。
使用 Java 语言实现如下:
package org.shirdrn;
import java.util.ArrayList
来源: http://www.51edu.com/it/bckf/493391.html