Форум » Обработка символьных строк » 4105 » Ответить

4105

988013@mail.ru: [pre2] k=0 m=0 s='' sm='' f=open('C:/Users/qwe/Downloads/24-168.txt') n=f.readline() for i in range(len(n)-1): if n[ i]<=n[i+1]: k+=1 s=s+n[ i] else: m=max(m,k) k=0 if len(sm)<len(s): sm=s s='' print(m,sm) print('ABCDEFGHIJKLMNOPQRSTUVWXYZ')[/pre2] в ответе получается 8 CFJNOPQV

Ответов - 5

Поляков: Отлаживайте в пошаговом режиме. Можете посмотреть авторское решение, это задача 24-168 из основного сборника. Решения есть на сайте.

flo23: Константин Юрьевич, здравствуйте. Посмотрите мое решение этой задачи. Ответ моей программы сходится с ответом на сайте, но я не уверена в правильности своей программы, так как проверяя текстовый пример из задания в ответе получаю не 7, а 9. А пример из задания следующий: Например, для строки AABBAABBCCDDDEFFGF искомая последовательность – BBCCDDD, её длина – 7. Не могу понять почему ответом является подстрока BBCCDDD, а не AABBCCDDDEFFG? [pre2] f=open('24-168.txt') s=f.readline() mlf=0 i=0 k=0 mk=0 s1='' s2='' while i<(len(s)-2): if s[ i]<=s[i+1]<=s[i+2] and s[i+2]<=s[i+3]: k=k+3 s1=s1+s[ i]+s[i+1]+s[i+2] if k>mk: mk=k s2=s1 i=i+3 else: i=i+1 k=0 s1='' print(mk) print(s2) [/pre2]

Поляков: flo23 пишет: Не могу понять почему ответом является подстрока BBCCDDD, а не AABBCCDDDEFFG? Потому что нужна последовательность из ТРЁХ различных символов.


flo23: Спасибо. Но тогда почему в ответе число не кратное трем? В ответе 7. Если рассматривать по тройкам, то получается первая тройка BBC, вторая тройка CDD, а седьмой символ почему в ответе?

Поляков: flo23 пишет: Но тогда почему в ответе число не кратное трем? Трёх РАЗЛИЧНЫХ символов. Различные символы - это B, C, D. Они выстроены в цепочку BBCCDDD.



полная версия страницы