Advertisement
qekaqeka

24 школково вариант 24 хард

Jun 11th, 2023 (edited)
1,086
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.83 KB | None | 0 0
  1. f = open('24__1o24c.txt')
  2.  
  3.  
  4. mc = 0 #макс размер подстроки
  5. k = 0 #счётка для размера подстроки
  6.  
  7. s = f.read()
  8.  
  9. a = False # флаг, True если мы уже нашли букву A для подстроки
  10. b = False # флаг, True если мы уже нашли букву B для подстроки
  11. c = False # флаг, True если мы уже нашли букву C для подстроки
  12. ci = -1 # индекс последней буквы C для подстроки
  13. d = False # флаг, True если мы уже нашли букву C для подстроки
  14. ai = 0 # индекс начала подстроки(финальной)
  15. ait = 0  # временный индекс начала подстроки (любой)
  16. di = 0 # индекс конца подстроки(финальной)
  17. for i in range(len(s)):
  18.     k += 1
  19.     if s[i] == 'A':
  20.         ait = i
  21.         if a:      # если А уже была найдена, начинаем новою подстроку и обнуляем остальное
  22.             k = 1
  23.             a = True
  24.             b = False
  25.             c = False
  26.             d = False
  27.             ci = -1
  28.         else:     # если А не была найдена, начинаем новою подстроку
  29.             k = 1
  30.             a = True
  31.  
  32.     elif s[i] == 'B': # если нашли B и A уже была найдена, меняем соответствующий флаг
  33.         if a:
  34.             b = True
  35.            
  36.     elif s[i] == 'C': # если нашли С и B уже была найдена, меняем соответствующий флаг и запоминаем индекс это буквы в строке
  37.         if b:
  38.             c = True
  39.             ci = i          
  40.  
  41.     elif s[i] == 'D': # если нашли D и C уже была найдена, меняем соответствующий флаг и запоминаем индекс это буквы в строке
  42.         if c:
  43.             if i - ci == 2:   # также проверяем что между нужной C и D есть ровно один символ
  44.                 d = True
  45.                 if mc < k: # если новая подстрока получилась больше прошлых, меня значения максимальное длинны и запоминаем индексы
  46.                            #последней и первой буквы этой подстроки
  47.                     mc = k
  48.                     ai = ait
  49.                     di = i
  50.                
  51. print(mc, s[ai:di+1], ai, di) #выводим максимальную длину, подстроку с максимальной длинной и индексы её начала и конца
  52.        
  53.        
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement