【发布时间】:2010-08-20 09:41:48
【问题描述】:
我正在寻找一些有效的方法(在 .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 的索引 3 和 listTwo 的索引 -1(即它不存在)上。
当然,如果后面的数字与我的序列匹配,我可以通过 int 和每个索引循环遍历列表 int 并搜索,但是有没有更有效的方法(例如使用扩展方法)?
【问题讨论】:
-
当然,如果列表未排序,您将不得不遍历每个项目直到找到序列?使用扩展方法或 Linq 并不能神奇地提高效率。
-
我相当怀疑是否有一些.NET 库具有这种类型的扩展。但是您可以创建自己的。
-
我必须补充一点,我的序列相当短(数量很少),但我要搜索的列表很长(数千个项目)