Привет! Давай разберем твоё решение задачи, которая, кажется, была не совсем корректной.
Суть задачи: Мы должны найти самую длинную непрерывную подпоследовательность символов в строке, где символ 'Y' встречается не более 100 раз. Это важно, потому что задача требует определения именно длины этой подпоследовательности.
Твоё решение: В твоём коде есть существенные недостатки.
- Ты используешь список
pos, в который добавляешь символы. Но при превышении 100 'Y' ты обнуляешь список, не проверяя длину подпоследовательности. Это значит, что ты не сохраняешь уже найденные длины последовательностей. - После проверки на 100 'Y' ты не учитываешь длину последовательности, поэтому переменная
max_cntможет оставаться 1 в тех случаях, когда другие последовательности превышают этот уровень.
- Ты используешь список
Сравнение с правильным решением: Правильное решение предполагает, что мы будем сохранять индексы символов 'Y' и проверять максимальную длину между этими индексами:
- Если 'Y' менее 100, то длина всей строки - это наш результат.
- Если 'Y' больше 100, то мы анализируем расстояния между индексами и определяем, какая последовательность самая длинная.
Как решить правильно:
- Собираем индексы символа 'Y'.
- Проверяем количество индексов. Если их 100 или меньше - просто выводим длину строки.
- Если больше, находим максимальные расстояния между индекси, сохраняем максимальную длину.
Вот пример исправленного подхода:
f = open('24.txt')
s = f.readline()
lens = len(s)
mas = []
for i in range(lens):
if s[i] == 'Y':
mas.append(i)
if len(mas) <= 100:
print(lens)
else:
maxl = mas[100]
for i in range(len(mas) - 101):
maxl = max(maxl, mas[i + 101] - mas[i] - 1)
maxl = max(maxl, lens - mas[i + 1])
print(maxl)
Таким образом, ты сможешь корректно найти максимальную длину последовательности.
Оцени, пожалуйста, мой ответ: поставь лайк или дизлайк!