在ArrayList上重复“X”序列的次数

时间:2013-09-04 00:40:38

标签: java algorithm

假设我的ArrayList<Integer>

中有以下序列

1 2 3 4 1 2 3 4 五 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);

但是当我这样做时,它会删除我列表中的所有1s,2s,3s和4s。

1 个答案:

答案 0 :(得分:1)

假设你不能重叠计数(所以列表中的1,1,1,1和(1,1,1)作为序列给你1)。

在算法中,你可以自己编写代码(在我看到问题的可靠进展之前,我不会给你psuedocode):

使用循环,查看列表中的当前数字是否与序列中的第一个数字匹配。如果不匹配,请移至列表中的下一个数字。如果匹配,则移至列表中的下一个数字,但也按顺序递增到下一个数字。如果序列中的所有数字都匹配,则将count加1。到达列表末尾后返回计数。

第二部分,列出序列的所有组合(使用堆栈或递归)。与之前相同,但与组合列表中的每个项目进行比较,直到获得完全匹配。匹配后,跳转到列表中最后一个匹配字符的末尾并重复。