Один из алгоритмов нахождения самой длинной последовательности одинаковых символов в строке заключается в следующем: www.cyberforum.ru
- Получают длину строки. thecode.media
- Создают пару (char, int) для хранения максимальной длины последовательности и текущего символа. www.cyberforum.ru
- Перебирают символы от первого до последнего. thecode.media
- Находят следующий символ, сравнивая текущий с предыдущим. www.cyberforum.ru Если они равны, то увеличивают длину последовательности и запоминают текущий символ. www.cyberforum.ru
- Если разница между текущим и предыдущим символом больше максимальной длины, то обновляют пару: в неё добавляют текущий символ, а разницу между текущим и предыдущим символом — запоминают. www.cyberforum.ru
- Переходят к следующему символу. www.cyberforum.ru
Также для решения этой задачи можно использовать алгоритм Манакера. na-journal.ru Он получает на вход произвольную строку и возвращает массив чисел, индекс каждого из которых является центром палиндрома в строке, а числовое значение говорит о длине палиндрома. na-journal.ru Из результатов этого алгоритма можно найти самый длинный палиндром в исходной строке, найдя индекс самого большого числа в полученном массиве. na-journal.ru