Здравствуйте, Lexey, Вы писали:
В общем, алгоритм построения я запилил. Прощу посмотреть/покритиковать:
https://github.com/rsdn/CodeJam/pull/16/files
API для последующего использования после создания дерева пока нет. Буду его прикручивать второй очередью.
Кусок функционала вынесен в абстрактную базу, чтобы не дублировать код между SuffixTree и SuffixTreeNaive. Второе используется как простая референс-реализация для тестирования основной. В принципе, можно, и кодогенератор под это заюзать, чтобы не плодить базовые классы для внутреннего использования.
Текущую реализацию я успешно использовал для решения вот этой задачки:
https://www.hackerrank.com/challenges/string-function-calculation.
Просто отсабклассил SuffixTree, и использовал внутреннее представления дерева (в принципе, под нее приличное паблик API все равно сложно придумать).