Java 生成长度为<;=5.
我有一个Java字符串数组。我想生成一个字符串数组列表,其中包含长度的所有字符串集。您将需要一个K子集算法实现。我确信它们存在于数学图书馆中,或者你可以自己编写代码Java 生成长度为<;=5.,java,arrays,string,list,arraylist,Java,Arrays,String,List,Arraylist,我有一个Java字符串数组。我想生成一个字符串数组列表,其中包含长度的所有字符串集。您将需要一个K子集算法实现。我确信它们存在于数学图书馆中,或者你可以自己编写代码 S1是您的集合(或字母表),s2是长度为k(5)的子集集合。我想您必须编写自己的生成器,或者使用一些库进行排列/组合,应该有很多数学库可以这样做。下面是自己实现的示例: 在我看来,link中的示例正是您所需要的—只需更改输入数组和长度。作者还将其放在一个字符串中,我发现您希望将其放在数组中,因此输出也应该更改我将为您提供解决此问题
S1是您的集合(或字母表),s2是长度为k(5)的子集集合。我想您必须编写自己的生成器,或者使用一些库进行排列/组合,应该有很多数学库可以这样做。下面是自己实现的示例:
在我看来,link中的示例正是您所需要的—只需更改输入数组和长度。作者还将其放在一个字符串中,我发现您希望将其放在数组中,因此输出也应该更改我将为您提供解决此问题的方法 从空输出字符串开始。逐个将所有字符添加到前缀。对于添加的每个字符,通过递归调用k等于k-1来打印具有当前前缀的所有可能字符串 这里K是案例1到5的长度。我使用了以下代码:
...
String[] cols = ... //linea in input
Set<String> subSet= new HashSet<String>();
Set<Set<String>> sets = new HashSet<Set<String>>();
//popolo l'insieme - escludo la data
for(int i=1; i<cols.length; i++){
subSet.add(cols[i]);
}
// creo l'insieme delle parti e popolo
sets = powerSet(subSet);
public static Set<Set<String>> powerSet(Set<String> originalSet) {
Set<Set<String>> sets = new HashSet<Set<String>>();
if (originalSet.isEmpty()) {
sets.add(new HashSet<String>());
return sets;
}
List<String> list = new ArrayList<String>(originalSet);
String head = list.get(0);
Set<String> rest = new HashSet<String>(list.subList(1, list.size()));
for (Set<String> set : powerSet(rest)) {
if(set.size() < 5){
Set<String> newSet = new HashSet<String>();
newSet.add(head);
newSet.addAll(set);
sets.add(newSet);
sets.add(set);
}
}
return sets;
}
。。。
字符串[]cols=//输入线
Set subSet=新的HashSet();
Set Set=新的HashSet();
//popolo l'insieme-escludo la data
对于(int i=1;您能澄清一下吗?您已经在2而不是5处停止了。@pbabcdefp-我猜他是手动完成的,希望代码能够完成:)@TheLostMind Ok,但原始数组中只有4个元素。这肯定需要澄清。@pbabcdefp-Ya。。这个我agree@pbabcdefp对不起,我忘了省略号(:
...
String[] cols = ... //linea in input
Set<String> subSet= new HashSet<String>();
Set<Set<String>> sets = new HashSet<Set<String>>();
//popolo l'insieme - escludo la data
for(int i=1; i<cols.length; i++){
subSet.add(cols[i]);
}
// creo l'insieme delle parti e popolo
sets = powerSet(subSet);
public static Set<Set<String>> powerSet(Set<String> originalSet) {
Set<Set<String>> sets = new HashSet<Set<String>>();
if (originalSet.isEmpty()) {
sets.add(new HashSet<String>());
return sets;
}
List<String> list = new ArrayList<String>(originalSet);
String head = list.get(0);
Set<String> rest = new HashSet<String>(list.subList(1, list.size()));
for (Set<String> set : powerSet(rest)) {
if(set.size() < 5){
Set<String> newSet = new HashSet<String>();
newSet.add(head);
newSet.addAll(set);
sets.add(newSet);
sets.add(set);
}
}
return sets;
}