Текстовый файл состоит из символов T, U, V, W, X, Y и Z.
Определите в прилагаемом файле минимальное количество идущих подряд символов (длину непрерывной подпоследовательности), среди которых символ Z встречается не менее 270 раз.
Для выполнения этого задания следует написать программу.
Решение
🔹 Шаг 1. Читаем файл в строку и задаём левую границу окна, счётчик букв Z и…
s = open("24.txt").read()
l = z = 0
ans = 10**18
📌 Читаем файл в строку и задаём левую границу окна, счётчик букв Z и большое начальное значение для минимальной длины.
🔹 Шаг 2. Обходим строку слева направо
for r in range(len(s)):
z += s[r] == "Z"
📌 Обходим строку слева направо: на каждом шаге расширяем окно и считаем буквы Z.
🔹 Шаг 3. Пока в окне не меньше 270 букв Z, запоминаем текущую длину как…
while z >= 270:
ans = min(ans, r - l + 1)
📌 Пока в окне не меньше 270 букв Z, запоминаем текущую длину как кандидат на минимум.
🔹 Шаг 4. Сдвигаем левую границу и уменьшаем счётчик Z, пока условие ещё…
z -= s[l] == "Z"
l += 1
📌 Сдвигаем левую границу и уменьшаем счётчик Z, пока условие ещё выполняется.
🔹 Шаг 5. Жми RUN
print(ans)
📌 Жми RUN — в выводе будет минимальная длина подходящего фрагмента.
✅ Ответ: 1058
🔹 Полный код
s = open("24.txt").read()
l = cnt = 0
ans = 10**18
for r in range(len(s)):
if s[r] == "Z":
cnt += 1
while cnt >= 270:
ans = min(ans, r - l + 1)
if s[l] == "Z":
cnt -= 1
l += 1
print(ans)