Мне нужно разработать алгоритм в O (n), который задал строку t длины n, вычислить количество различных подстрок t.Сколько разных подстрок в строке?
ответ
Создайте автомат суффикса для входной строки.
Найти сумму
maxLength[v] - maxLength[suffixLink[v]] for all states v
, гдеmaxLength[v]
находится самый длинный путь от корня доv
состояния иsuffixLink[v]
является ссылкой суффикса этого состояния.
Построение автомата суффикса в линейном времени является хорошо известной задачей. Вторая часть - просто простой обход. Таким образом, общая временная сложность составляет O(n)
.
Большое спасибо, это именно то, что мне нужно. Ибо, если это помогает кому-то оставить ссылку, где я нашел алгоритм. [english google's translate] (https://translate.google.es/translate?hl=ru&sl=ru&tl=ru&u=http%3A%2F%2Fe-maxx.ru%2Falgo%2Fsuffix_automata) [оригинал на русском] (http://e-maxx.ru/algo/suffix_automata) – corxil
- 1. Bash - подсчет подстрок в строке
- 2. Подсчет подстрок в строке
- 3. Подсчет подстрок в строке
- 4. Количество подстрок в строке
- 5. Позиции подстрок в строке
- 6. Строка поиска для разных подстрок
- 7. Подсчет соответствия подстрок в строке
- 8. заменить несколько подстрок в строке
- 9. Заменить несколько подстрок в строке
- 10. Найти количество подстрок в строке
- 11. Найти, сколько разных букв есть в строке в Python
- 12. Разделив строку для разных подстрок
- 13. Быстрый алгоритм поиска подстрок в строке
- 14. Общий подсчет подстрок в строке java
- 15. Java заменить несколько подстрок в строке
- 16. Возвращает число алфавитных подстрок в строке ввода
- 17. Использование linq для подсчета подстрок в строке?
- 18. Поиск подстрок в большой строке (C)
- 19. Oracle: подсчет числа подстрок в строке?
- 20. Поиск и извлечение нескольких подстрок в строке?
- 21. Поиск различных подстрок в предоставленной строке
- 22. Получить первые буквы подстрок в строке
- 23. Как изменить порядок подстрок в строке?
- 24. Изменение и замена цитируемых подстрок в строке
- 25. C# Замена соответствующих подстрок в строке
- 26. Алгоритма поиска подстрок в большой строке
- 27. Поиск длины всех подстрок в строке
- 28. как сортировать подстрок, разделенных пробелами в строке
- 29. Поиск позиции некоторых подстрок в строке
- 30. Напишите функцию для подсчета количества подстрок Palindrome в заданной строке?
и каков ваш подход? –
Формула: ** N!/(E0! ... Em!) **, где E0 ... Em - это счетчики m различных символов в строке. Кажется довольно простым взять его оттуда в O (n). –