Вам предоставляется строка, которая определяет частоту всей сортировки подстроки (порядок уменьшения) в соответствии с этой частотой.Эффект Все подсчеты подстроки в отсортированном порядке
Например: ababa {"a", "b", "a", "b", "a", "ab", "ba", "ab", "ba", "aba", " bab "," aba "," abab "," baba "," ababa "}.
выход:
3,2,2,2,2,1,1,1,1
объяснение
3 а 2 б 2 ба 2 ABA 2 аб 1 ABAB 1 Baba 1 Абеба 1 ЬаЬ
раствор
1) одно очевидное решение состоит в том, чтобы сохранить всю строку в карте хеша и посчитать ее частоту, но она примет o (n^3logn) O (n^2 * n) {n^2 число подстроки * O (n) для сравнения строки * logn (поскольку карта поддерживается как красное черное дерево)} 2) Вставить всю подстроку в Тройном дереве поиска, затем получить частоту каждой подстроки, затем отсортировать частоту O (n^3 logn)
Мне интересно, существует ли O (n^2) или O (nlogn) решение exsist.
как этот раствор http://www.quora.com/Given-a-string-how-do-I-find-the-number-of-distinct-substrings-of-the-string
Возможный дубликат [Как подсчитать количество способов выбора k равных подстрок из списка L (список всех подстрок)] (http://stackoverflow.com/questions/30711272/how- to-count-the-number-of-way-of-choose-of-k-equal-substrings-from-a-list-l) – MBo