Учитывая, что строка и массив строк находят самый длинный суффикс строки в массиве.Найти самый длинный суффикс строки в заданном массиве
, например
струнного = google.com.tr
массив = tr, nic.tr, gov.nic.tr, org.tr, com.tr
возвращает com.tr
Я пытался использовать бинарный поиск с конкретным компаратором, но потерпел неудачу.
C-код был бы рад.
Edit:
Я должен сказать, что им в поисках решения, где я могу сделать столько работы, сколько я могу на стадии подготовки (когда я только массив суффиксов, и я могу сортировать его в каждом путь, построить любую структуру данных вокруг него и т. д.), а не для данной строки найти свой суффикс в этом массиве как можно быстрее. Кроме того, я знаю, что я могу построить trie из этого массива, и, вероятно, это даст мне лучшую производительность, но я очень ленив и держу trie в сыром C в огромном мире запутанного корпоративного кода - это совсем не забавно. Таким образом, подход, подобный бинсону, будет очень приветствуем.
Вы хотите, чтобы мы разрешили вашу домашнюю работу? –
Каковы ваши требования к сложности? Будете ли вы делать это много раз для одной строки и множества разных массивов или все время для одного массива, но различной строки каждый раз? –
Я не хочу испортить веселье, поэтому я просто предлагаю вам построить какую-то древовидную структуру из реверсированных элементов массива, а затем пересечь это дерево, когда вы соответствуете строке ввода символов со спины. –