我正在寻找一些有效的方法(在.NET中),如何查找某些字节列表中是否有字节序列,以及是否有任何第一个开始的索引。如何在列表中查找子列表的索引?
例如,让我们说我有:
var sequence = new List<byte> { 5, 10, 2 };
var listOne = new List<byte> { 1, 3, 10, 5, 10, 2, 8, 9 };
var listTwo = new List<byte> { 1, 3, 10, 5, 2, 10, 8, 9 };
,其结果应该是我的顺序是在那么listOne和指数-1指数3(即它不存在)的listTwo。
当然,我可以遍历列表int int和每个索引,并搜索下面的数字是否与我的序列匹配,但有没有更有效的方法(例如使用扩展方法)?
当然,如果列表未排序,你将不得不迭代每个项目,直到找到序列?使用扩展方法或Linq不能奇迹般地提高效率。 – 2010-08-20 09:48:29
我相当怀疑有这种类型的扩展的.NET库。但你可以创建你自己的。 – 2010-08-20 09:58:05
我不得不补充说,我的序列很短(少数),但我搜索它的列表很长(数千个项目) – 2010-08-20 10:01:33