Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多少次';X';ArrayList上的序列重复_Java_Algorithm - Fatal编程技术网

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的循环(这允许您提取子列表,然后比较两个列表)。