Задана строка $$$s$$$ длины $$$n$$$, состоящая только из строчных букв латинского алфавита.
Подстрока строки — это последовательная подпоследовательность этой строки. Таким образом, строка «forces» является подстрокой «codeforces», а строка «coder» — нет.
Ваша задача — посчитать количество способов удалить ровно одну подстроку из этой строки таким образом, чтобы все оставшиеся символы были равны между собой (количество различных символов было равно единице или нулю).
Гарантируется, что в строке $$$s$$$ существует хотя бы два различных символа.
Заметьте, что вы можете удалить всю строку и это является корректным способом. Также заметьте, что вам необходимо удалить хотя бы один символ.
Так как ответ может быть довольно большим (хотя не очень большим), выведите его по модулю $$$998244353$$$.
Если вы программируете на Python, рассмотрите возможность отправки решения на PyPy, а не на Python, когда будете отправлять свой код.
Первая строка входных данных содержит одно целое число $$$n$$$ ($$$2 \le n \le 2 \cdot 10^5$$$) — длину строки $$$s$$$.
Вторая строка входных данных содержит строку $$$s$$$ длины $$$n$$$, состоящую только из строчных букв латинского алфавита.
Гарантируется, что в строке $$$s$$$ существует хотя бы два различных символа.
Выведите одно целое число — количество способов по модулю $$$998244353$$$ удалить ровно одну подстроку из $$$s$$$ таким образом, чтобы все оставшиеся символы были равны.
4 abaa
6
7 aacdeee
6
2 az
3
Пусть $$$s[l; r]$$$ — подстрока строки $$$s$$$ с позиции $$$l$$$ по позицию $$$r$$$ включительно.
Тогда в первом тестовом примере вы можете удалить следующие подстроки:
Во втором тестовом примере вы можете удалить следующие подстроки:
В третьем тестовом примере вы можете удалить следующие подстроки:
Название |
---|