Zaq*_*Zaq 3 java linked-list subset
list1:[1,2,3,4,5]
list2:[1,2,3]
Run Code Online (Sandbox Code Playgroud)
如何检查list2是否是list1的子集?我尝试了containsAll(),但只要列表2中的元素存在于list1中,它就会成立.我想要与标准相同的顺序而不仅仅是元素.
Las*_*rdi 10
用这个:
boolean contains(List<?> list, List<?> sublist) {
return Collections.indexOfSubList(list, sublist) != -1;
}
Run Code Online (Sandbox Code Playgroud)
这是算法
1)迭代第二个列表
2)检查第一个列表中是否包含元素
如果没有返回 false
如果是,则使用indexOf()从第一个列表中获取该元素的索引
3)现在在迭代时检查下一个元素是否等于list1(lastMatchedIndexFromList1++)
如果返回 false
如果是,则重复步骤 3,并在迭代结束时返回 true