假设我的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。
答案 0 :(得分:1)
假设你不能重叠计数(所以列表中的1,1,1,1和(1,1,1)作为序列给你1)。
在算法中,你可以自己编写代码(在我看到问题的可靠进展之前,我不会给你psuedocode):
使用循环,查看列表中的当前数字是否与序列中的第一个数字匹配。如果不匹配,请移至列表中的下一个数字。如果匹配,则移至列表中的下一个数字,但也按顺序递增到下一个数字。如果序列中的所有数字都匹配,则将count加1。到达列表末尾后返回计数。
第二部分,列出序列的所有组合(使用堆栈或递归)。与之前相同,但与组合列表中的每个项目进行比较,直到获得完全匹配。匹配后,跳转到列表中最后一个匹配字符的末尾并重复。