@Aeolloups

Почему неправильно работает код?

Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите наибольшую длину цепочки символов, среди которых нет символов K и L, стоящих рядом.

Например, в тексте ABCAABAKLD самая длинная цепочка символов, удовлетворяющая условию  — ABCAABAK, её длина равна 8.
Сам файл
Ссылка
Ответ должен быть такой - " 2796"
А у меня "2882"
f = open('24 (2).txt').readline()
c = 1
mx = 0

for n in range(len(f)-1):
    if ((f[n] != 'K' and f[n+1] != 'L') or (f[n] != 'L' and f[n+1] != 'K')):
        c += 1
    else:
        mx = max(c, mx)
        c = 1

print(mx)
  • Вопрос задан
  • 222 просмотра
Пригласить эксперта
Ответы на вопрос 2
@igor6130
Набросал такой код.
def get_line_length():
    with open("24.txt", "r") as file:
        f = file.read()
    
    letter_seq_list = f.replace("KL", " ").split()
    max_seq = max(map(len, letter_seq_list))

    return max_seq


if __name__ == "__main__":
    print(get_line_length())

Правда, результат равен 5907. Возможно, я неверно понял задание или файл по ссылке содержит другие данные.
Ответ написан
@dmshar
import re
with open("24.txt", "r") as file:
        f = file.read()
fmsx=0
fs=re.split('KL|LK',f)
for fs1 in fs:
    if fmsx<=len(fs1):
        fmsx=len(fs1)
print(fmsx)


Результат:

2794

Это "чистая" длинна. Надо длина, включая 'KL' в конце - добавляете к результату 2.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы