Скажем, у меня есть «целевая строка» (или список, не имеет большого значения) некоторой длины N. Для простоты предположим, что есть два и только два возможных символа: «A» и «B». Так, например, возможно, целевая строка — «ABBABB».
Затем мне дается тестовая строка некоторой длины ‹= N (опять же, те же два возможных символа). Я хочу определить, может ли тестовая строка быть преобразована в целевую строку при условии, что единственным допустимым преобразованием является вставка символов.
Например, давайте снова скажем, что цель — ABBABB, а тест — BBB. Тогда да, тест можно превратить в цель; например: BBB -> BBAB -> ABBAB -> ABBABB.
Но если бы тест был БАБА, то его нельзя было бы преобразовать в цель, поскольку цель начинается с А, а тест — нет, и вставка А в тест не сработает, потому что это приведет к тому, что в нем будет больше А. чем у цели.
Очевидно, я мог бы сделать это определение «да» или «нет» грубой силой, перебирая все возможные последовательности вставок символов. Но есть ли более эффективный способ?
Заранее спасибо.