Je cherche un moyen efficace (en .NET), comment trouver s'il y a une séquence d'octets dans une liste d'octets et s'il y en a, index où le premier commence.Comment trouver l'index de la sous-liste dans la liste?
Par exemple disons que j'ai:
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 };
et le résultat devrait être que ma séquence est l'indice 3 dans le LISTONE et l'indice -1 (.-À-dire qu'il est pas là) dans le listTwo.
Bien sûr, je peux parcourir la liste int par int et depuis chaque index et rechercher si les nombres suivants correspondent à ma séquence, mais y a-t-il un moyen plus efficace (par exemple en utilisant des méthodes d'extension)?
Si la liste n'est pas triée, vous devrez sûrement parcourir tous les éléments jusqu'à ce que la séquence soit trouvée? L'utilisation de méthodes d'extension ou Linq ne peut pas augmenter l'efficacité de façon magique. –
Je doute qu'il y ait une librairie .NET avec ce type d'extension. Mais vous pouvez créer le vôtre. –
Je dois ajouter, que ma séquence est plutôt courte (peu de nombre) mais les listes où je la recherche sont longues (milliers d'articles) –