Припустимо, у мене дві струни. Назвіть їх і . Жоден рядок не має повторених символів.
Як я можу знайти найкоротшу послідовність операції вставлення, переміщення та видалення, яка перетворює в , де:
insert(char, offset)
вставкиchar
в заданомуoffset
рядкуmove(from_offset, to_offset)
переміщує персонажа, який знаходиться в даний момент у зміщенні,from_offset
на нове положення, щоб він змістивсяto_offset
delete(offset)
видаляє символ уoffset
Приклад програми: Ви робите запит до бази даних та показуєте результати на своєму веб-сайті. Пізніше ви повторно запитуєте до бази даних і виявляєте, що результати змінилися. Ви хочете змінити те, що знаходиться на сторінці, щоб відповідати тому, що зараз знаходиться в базі даних, використовуючи мінімальну кількість DOM-операцій. Є дві причини, чому ви хочете отримати найкоротшу послідовність операцій. По-перше, ефективність. Коли змінюється лише кілька записів, ви хочете переконатися, що ви виконуєте а не \ mathcal {O} (n) DOM-операції, оскільки вони дорогі. По-друге, правильність. Якщо елемент перемістився з однієї позиції в іншу, потрібно перемістити пов'язані вузли DOM за одну операцію, не руйнуючи їх і відтворюючи їх. Інакше ви втратите стан фокусу, вмісту елементів тощо.<input>