Java 多少次';X';ArrayList上的序列重复
假设我在我的Java 多少次';X';ArrayList上的序列重复,java,algorithm,Java,Algorithm,假设我在我的ArrayList 一, 2. 3. 4. 1. 2. 3. 4. 5. 六, 我需要知道序列(1,2,3,4)在列表上出现了多少次 对于这个例子,答案是2 我需要两个解决方案,一个,数字必须按以下顺序(1,2,3,4) 另一个不遵循顺序(4,1,2,3) 我正在使用Java,提前谢谢 我尝试的是: 检查序列,如果是真的: AnotherList.add(Integer.valueOf(1)); AnotherList.add(Integer.valu
ArrayList
一,
2.
3.
4.
1.
2.
3.
4.
5.
六,
我需要知道序列(1,2,3,4)在列表上出现了多少次
对于这个例子,答案是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。到达列表末尾后返回计数
第二部分,列出序列的所有组合(使用堆栈或递归)。和以前一样,但要与组合列表中的每个项目进行比较,直到获得完全匹配。匹配后,跳到列表中最后一个匹配字符的末尾并重复 我不确定你是否意识到这一点,但你不能只是过来传达信息:“我有一个问题,我什么都没有尝试过,我付出了0努力试图解决我的问题,我希望你能为我做这件事。”。你试过什么吗?一旦你尝试了一些东西,如果你的代码不起作用,那么你可能会问一个问题。事实上,我尝试了一些东西,从ArrayList中删除了数字,但是如果它们重复,它会删除所有的数字。至少发布你的代码,让人们知道你已经付出了努力,不管有多小。如果序列是(1,1,1)你的arraylist包含(1,1,1,1)这算是两次还是一次?也许你应该重写代码,如果它不起作用,请随意提问。我认为使用循环和ifs可以做到这一点,但我认为这是一种更复杂的方法,就像我们可以在.net上使用LINQ做的事情一样。遗憾的是,在java中,LINQ没有完全相同的功能。您可以获得类似的外部库。如果您想要更聪明的方法,可以尝试使用.sublist和.equals作为arraylist的循环(这允许您提取子列表,然后比较两个列表)。