Текстовый файл состоит из десятичных цифр и заглавных букв латинского алфавита.
Определите в прилагаемом файле минимальное количество идущих подряд символов, среди которых пара символов «20» (в указанном порядке) встречается ровно 26 раз, гласная буква встречается ровно один раз, искомая последовательность заканчивается этой единственной гласной буквой.
В ответе запишите число - количество символов в найденной последовательности.
Для выполнения этого задания следует написать программу.
Примечание. гласные буквы латинского алфавита: A, E, I, O, U, Y.
Решение
🔹 Шаг 1. Считываем строку из файла
VOWELS = "AEIOUY"
s = open("24.txt").read()
📌 Что происходит:
🔹 Шаг 2. Подготавливаем переменные
l = 0
c20 = 0
v = 0
ans = 10**18
📌 Назначение переменных:
l — левая граница окна;
c20 — число пар 20 в окне;
v — число гласных в окне;
ans — минимальная длина подходящего фрагмента.
🔹 Шаг 3. Двигаем правую границу окна
for r in range(len(s)):
📌 Что происходит:
🔹 Шаг 4. Считаем пары и гласные в окне
if
📌 Объяснение:
🔹 Шаг 5. Сужаем окно при лишних парах или гласных
while c20 > 26 or v > 1:
if l >= 1 and s[l-1:l+1] == "20":
if s[l] in VOWELS:
📌 Что происходит:
пока пар 20 больше 26 или гласных больше 1, сдвигаем l;
при сдвиге уменьшаем счётчики, если символ вышел из окна.
🔹 Шаг 6. Обновляем минимальный ответ
if c20 == 26 and v == 1 and s[r] in VOWELS:
ans = min(ans, r - l + 1)
📌 Почему так:
фрагмент подходит, если ровно 26 пар 20, ровно 1 гласная и окно заканчивается на гласную;
длину r - l + 1 сравниваем с ans через min.
🔹 Шаг 7. Вывод результата
print(ans)
📌 Это и есть ответ задачи — минимальное количество идущих подряд символов с ровно 26 парами 20, ровно 1 гласной в конце фрагмента.