Если у меня есть входная строка и массив:
s = "to_be_or_not_to_be"
pos = [15, 2, 8]
Я пытаюсь найти самый длинный общий префикс между последовательными элементами массива pos
, ссылающийся на исходный с
.Я пытаюсь получить следующий результат:
longest = [3,1]
Я получил это путем вычисления самого длинного общего префикса следующих пар:
s [15:]
, который равен _be
и s [2:]
, что является _be_or_not_to_be
, что дает 3 ( _be
) s [2:]
, что является _be_or_not_to_be
и s [8:]
, что равно _not_to_be
, что дает 1 ( _
) Однако, если s
огромен, я не хочу создавать несколько копий, когда я делаю что-то вроде s [x:]
. После нескольких часов поиска я нашел функцию buffer , которая поддерживает только одну копию входной строки, но я не был уверен, как наиболее эффективно использовать ее здесь в этом контексте. Любые предложения о том, как этого добиться?