Умение создавать собственные программы (10–20 строк) для обработки символьной информации · 10 заданий
- Задание №24№24
Текстовый файл состоит из заглавных букв латинского алфавита Q, R, W и цифр 1, 2, 4. Определите в прилагаемом файле максимальное количество идущих под…
Обработка символьных данных
- Задание №24№24
Текстовый файл состоит из символов A, C, D, F и O. Определите максимальное количество идущих подряд пар символов вида согласная + гласная в прилагаемо…
Обработка символьных данных
- Задание №24№24
Текстовый файл состоит из символов P, Q, R и S. Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет идущи…
Обработка символьных данных
- Задание №24№24
Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых каждые два сосе…
Обработка символьных данных
- Задание №24№24
Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальное количество идущих подряд символов, символ Z встречается не более…
Обработка символьных данных
- Задание №24№24
Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых нет символа Z.…
Обработка символьных данных
- Задание №24№24
Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальное количество идущих подряд символов, расположенных в обратном алфа…
Обработка символьных данных
- Задание №24№24
Текстовый файл состоит из символов T, U, V, W, X, Y и Z. Определите в прилагаемом файле максимальное количество идущих подряд символов (длину непрерыв…
Обработка символьных данных
- Задание №24№24
Текстовый файл состоит из заглавных букв латинского алфавита A, B, C, D, E и F. Определите в прилагаемом файле максимальное количество идущих подряд с…
Обработка символьных данных
- Задание №24№24
Задание выполняется с использованием прилагаемых файлов. Текстовый файл состоит из десятичных цифр и заглавных букв латинского алфавита. Определите в…
Обработка символьных данных
Текстовый файл состоит не более чем из 106 символов X, Y и Z. Определите максимальное количество идущих подряд символов, символ Z встречается не более одного раза.
Для выполнения этого задания следует написать программу.
Правильный ответ
43
Пояснение
Решение:
Нужен самый длинный участок, в котором символ Z встречается не более одного раза. Разрежем файл символами Z на куски, состоящие только из X и Y: s.split('Z'). Тогда искомый участок — это либо один такой кусок (ноль символов Z), либо два соседних куска вместе с разделяющим их символом Z, то есть len(parts[i]) + 1 + len(parts[i+1]).
Остаётся перебрать все пары соседних кусков и взять максимум.
s = open('44250_24.txt').read().strip()
parts = s.split('Z')
ans = max(len(p) for p in parts)
for i in range(len(parts) - 1):
ans = max(ans, len(parts[i]) + 1 + len(parts[i + 1]))
print(ans)
Можно и одним проходом «методом двух указателей»: двигаем правую границу окна, а при появлении в окне второго Z сдвигаем левую границу за первый Z.
s = open('44250_24.txt').read().strip()
mx = 0
left = 0
zpos = []
for i, c in enumerate(s):
if c == 'Z':
zpos.append(i)
if len(zpos) > 1:
left = zpos.pop(0) + 1
if i - left + 1 > mx:
mx = i - left + 1
print(mx)
Обе программы выводят 43.
Ответ: 43