Supposons que j'ai deux chaînes. Appelez - les et . Aucune chaîne n'a de caractères répétés.
Comment puis-je trouver la séquence la plus courte d'opérations d'insertion, de déplacement et de suppression qui transforme en , où:B
insert(char, offset)
insèrechar
au donnéoffset
dans la chaînemove(from_offset, to_offset)
déplace le caractère actuellement décaléfrom_offset
vers une nouvelle position afin qu'il soit décaléto_offset
delete(offset)
supprime le caractère àoffset
Exemple d'application: vous effectuez une requête dans la base de données et affichez les résultats sur votre site Web. Plus tard, vous réexécutez la requête de base de données et découvrez que les résultats ont changé. Vous souhaitez modifier ce qui se trouve sur la page pour correspondre à ce qui se trouve actuellement dans la base de données en utilisant le nombre minimum d'opérations DOM. Il y a deux raisons pour lesquelles vous souhaiteriez la séquence d'opérations la plus courte. Tout d'abord, l'efficacité. Lorsque seuls quelques enregistrements changent, vous devez vous assurer que vous effectuez les opérations DOM plutôt que , car elles sont coûteuses. Deuxièmement, l'exactitude. Si un élément est déplacé d'une position à une autre, vous souhaitez déplacer les nœuds DOM associés en une seule opération, sans les détruire ni les recréer. Sinon, vous perdrez l'état de la mise au point, le contenu des éléments, etc.O ( n )<input>
move
opérations, vous devrez donc peut-être varier lors de l'interprétation de la partition.