В теории формального языка и информатике подстрока представляет собой непрерывную последовательность символов внутри строки . [ нужна цитата ] Например, « лучшее из » — это подстрока « Это были лучшие времена ». Напротив, « Itwastimes » является подпоследовательностью « Это были лучшие времена », а не подстрокой.
Префиксы и суффиксы — это частные случаи подстрок. Префикс строки — это ее подстрока , стоящая в начале ; аналогично, суффикс строки — это подстрока, которая находится в конце .
Подстроками строки « apple » будут: « a », « ap », « app », « appl », « appl », « p », « pp », « ppl », « pple », « pl ». , " ple ", " l ", " le " " e ", "" (обратите внимание на пустую строку в конце).
Строка — это подстрока (или фактор) [1] строки , если существуют две строки и такие, что . В частности, пустая строка является подстрокой каждой строки.
Пример: строка равна подстрокам (и подпоследовательностям) с двумя разными смещениями:ana
banana
банан ||||| ана|| ||| ана
Первое вхождение получается с помощью и , а второе вхождение получается с помощью и является пустой строкой.b
na
ban
Подстрока строки является префиксом суффикса строки и, что эквивалентно, суффиксом префикса; например, nan
является префиксом nana
, который, в свою очередь, является суффиксом banana
. Если является подстрокой , это также подпоследовательность , что является более общим понятием. Вхождения данного шаблона в данную строку можно найти с помощью алгоритма поиска строк . Поиск самой длинной строки, которая равна подстроке из двух или более строк, известен как задача о самой длинной общей подстроке . В математической литературе подстроки также называют подсловами (в Америке) или факторами (в Европе). [ нужна цитата ]
Строка является префиксом [1] строки , если существует строка такая, что . Правильный префикс строки не равен самой строке; [2] некоторые источники [3] дополнительно ограничивают непустой собственный префикс. Префикс можно рассматривать как частный случай подстроки.
Пример: строка ban
равна префиксу (а также подстроке и подпоследовательности) строки banana
:
банан|||запретить
Символ квадратного подмножества иногда используется для обозначения префикса, что означает, что это префикс . Это определяет бинарное отношение к строкам, называемое префиксным отношением , которое представляет собой особый вид префиксного порядка .
Строка является суффиксом [1] строки , если существует строка такая, что . Правильный суффикс строки не равен самой строке. Более ограниченная интерпретация состоит в том, что он также не пуст. [1] Суффикс можно рассматривать как частный случай подстроки.
Пример: строка nana
равна суффиксу (а также подстроке и подпоследовательности) строки banana
:
банан |||| бабуля
Суффиксное дерево для строки — это структура данных дерева , которая представляет все ее суффиксы. Суффиксные деревья имеют большое количество приложений в строковых алгоритмах . Массив суффиксов представляет собой упрощенную версию этой структуры данных, в которой перечислены начальные позиции суффиксов в алфавитном порядке; у него много одинаковых приложений.
Граница — это суффикс и префикс одной и той же строки, например «баб» — это граница слова «бабаб» (а также «бабуин, поедающий шашлык»). [ нужна цитата ]
Суперстрока конечного набора строк — это одна строка, содержащая каждую строку в качестве подстроки. Например, это суперстрока , более короткая. Объединение всех членов в произвольном порядке всегда дает тривиальную суперстроку . Найти суперструны минимально возможной длины — более интересная задача.
Строка, содержащая все возможные перестановки указанного набора символов, называется суперперестановкой .