Estoy buscando una forma eficiente (en .NET), cómo encontrar si hay una secuencia de bytes en alguna lista de bytes y si hay alguna, índice donde comienza la primera.¿Cómo encontrar el índice de sublista en la lista?
Por ejemplo digamos que tengo:
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 };
y el resultado debe ser que mi secuencia es el índice de las 3 de la LISTONE y en el índice de -1 (. Es decir, que no está ahí) en el listTwo.
Por supuesto, puedo recorrer la lista int por int y de cada índice y buscar si los siguientes números coinciden con mi secuencia, pero ¿hay alguna forma más eficiente (por ejemplo, utilizando métodos de extensión)?
Seguramente si la lista no está ordenada, ¿tendrá que iterar sobre cada elemento hasta encontrar la secuencia? El uso de métodos de extensión o Linq no puede aumentar mágicamente la eficiencia. –
No creo que exista alguna lib de .NET con este tipo de extensión. Pero puedes crear el tuyo propio. –
Tengo que agregar, que mi secuencia es bastante corta (pocos) pero las listas donde la busco son largas (miles de elementos) –