Как реализовать быстрый алгоритм сопоставления префикса со строкой? - PullRequest
1 голос
/ 18 апреля 2019

Там около 100К строк - префиксов, теперь нам нужно знать, соответствует ли данная строка одному из этих префиксов или нет.Например, префиксы:

12
123
1234
12345

Теперь заданная строка равна 123abc, она будет соответствовать префиксу "123";Если заданная строка 12340098, она будет соответствовать префиксу «1234».

Поскольку существует префикс 100K, поэтому нам нужен очень быстрый способ сопоставления, как мы можем использовать C ++ для его реализации?

1 Ответ

4 голосов
/ 18 апреля 2019

Я думаю, вы ищете структуру данных trie , которая оптимизирована для запросов вида "являются ли какие-либо из этих префиксов строк данной строки?" или "является ли данная строка префиксом любой из этих других строк?" (Это связано с детерминированным конечным автоматом, о котором @Sam Varshavchik упоминает в комментарии, хотя для полного понимания этой связи требуется немного теории CS).

Существует много способов реализации дерева в C ++. Я бы посоветовал начать с чтения структуры данных, чтобы лучше понять, как она работает, а затем использовать ее для руководства вашей реализацией. Если в процессе его кодирования вы столкнулись с некоторыми проблемами, не стесняйтесь задавать дополнительный вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...