问题的定义如下:输入元素,假设m
大集合,假定{a,b,c,d,..z}
我想要找到所有的子集长度范围从2-5元素包含输入字,m.条件:元素的顺序应该保持不变。
输出:
我能够通过以下代码从输入单词开始获得子集:
ArrayList<String> phrases = new ArrayList<>();
for (int j=1; j<=k-i; j++) {
String newSet = set[i] +" ";
for (int x=1; x<=j; x++) {
newSet=newSet+set[i+x]+" ";
}
phrases.add(newSet.trim());
}
return phrases;
}发布于 2016-08-23 15:54:29
正如另一个答复和评论所指出的,
产出如下:
[b, c]
[c, d]
[a, b, c]
[c, d, e]
[c, d, e, f]
[c, d, e, f, g]发布于 2016-08-23 13:40:06
您可以这样写:“元素的顺序应该保持不变”。所以,我假设您不是指集合,因为集合没有顺序,而是类似于列表和序列。
我的建议是:先找到长度为2的序列,然后是长度为3的序列,以此类推。这可以做,让我们假设长度4的方式如下。在大的“集合”中找到输入m的索引。然后从以m作为结果的第一个元素的序列开始。我是jklm。将“窗口”向右移动一步,直到找到的序列以m开始。所以,你得到了klmn,lmno和mnop。
这可以通过将当前查找序列的开始作为索引来实现。它必须以m -4作为当前长度加1的索引进行初始化,然后必须迭代4次。
https://stackoverflow.com/questions/39102260
复制相似问题