Подготовка к школе
1 класс
2 класс
3 класс
4 класс
5 класс
6 класс
7 класс
8 класс
9 класс
10 класс
11 класс
ОГЭ
ЕГЭ
Для всех
Назад

24. Подсчет символов: #297630

Сообщить о проблеме
Задание #297630
Задание было решено верно
Задание было решено неверно

Текстовый файл состоит из заглавных букв латинского алфавита $Q$, $R$, $W$ и цифр $1$, $2$, $4$. Определите в прилагаемом файле максимальное количество идущих подряд символов, среди которых ни одна буква не стоит рядом с буквой, а цифра — с цифрой.

Для выполнения этого задания следует написать программу.

Условие здесь локальное: оно ограничивает только соседние пары символов. Буква не рядом с буквой и цифра не рядом с цифрой означает ровно одно — типы символов чередуются. Конкретные значения ($Q$, $R$, $W$ или $1$, $2$, $4$) роли не играют, важен лишь признак «цифра или буква».

Раз ограничение накладывается только на пары соседей, никакого окна с двумя указателями не нужно. Достаточно одного прохода: ведём длину текущей чередующейся цепочки. Если очередной символ по типу отличается от предыдущего — цепочка продолжается, если совпадает — она обрывается и начинается заново с длины $1$.

s = open('24-24.txt').read().strip()

best = cur = 1
for i in range(1, len(s)):
    if s[i].isdigit() != s[i-1].isdigit():   # тип сменился — цепочка растёт
        cur += 1
    else:                                    # два подряд одного типа — обрыв
        cur = 1
    best = max(best, cur)

print(best)   # 17

Обратите внимание на начальное значение cur = 1: одиночный символ сам по себе условию удовлетворяет, нарушать там нечего.

Проверка найденного фрагмента: это $4W2W2R2R4Q4Q4Q2R2$, длина $17$, типы внутри действительно чередуются. Слева стоит цифра $1$, а фрагмент начинается с цифры $4$; справа стоит цифра $4$, а фрагмент кончается цифрой $2$. Ни влево, ни вправо расшириться нельзя.

Файл в этом задании совпадает с тем, что был раньше, поэтому и ответ тот же самый.

Показать
Очки опыта 20
Спросить Зави
0 заданий сегодня

Предложить улучшение