假设我的 ArrayList<Integer>
中有以下序列
1 2个 3个 4个 1个 2个 3个 4个 5个 6
我需要知道序列 (1,2,3,4) 在列表中出现了多少次。
对于这个例子,答案是 2!
我需要 2 个解决方案,一个,数字需要按以下顺序排列 (1,2,3,4) 另一个不遵循序列 (4,1,2,3)
我正在使用 Java,提前致谢。
我尝试过的: 检查序列,如果是真的:
AnotherList.add(Integer.valueOf(1));
AnotherList.add(Integer.valueOf(2));
AnotherList.add(Integer.valueOf(3));
AnotherList.add(Integer.valueOf(4));
if(TheList.containsAll(AnotherList))
TheList.removeAll(AnotherList);
但是当我这样做时,它会删除我列表中的所有 1、2、3 和 4。
最佳答案
假设您不能重叠计数(因此列表中的 1,1,1,1 与 (1,1,1) 作为序列给您 1)。
在算法中,您可以自己编写代码(在我看到问题取得实质性进展之前,我不会给您伪代码):
使用循环,查看列表中的当前数字是否与序列中的第一个数字匹配。如果不匹配,则移至列表中的下一个数字。如果匹配,则移动到列表中的下一个数字,但也会按顺序递增到下一个数字。如果序列中的所有数字都匹配,则加 1 计数。到达列表末尾后返回计数。
第二部分,列出序列的所有组合(使用堆栈或递归)。和以前一样,但是与组合列表中的每个项目进行比较,直到获得完全匹配。匹配后,跳转到列表中最后一个匹配字符的末尾并重复。
关于java - ArrayList 上的 'X' 序列重复了多少次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18603653/