boris-vlasenko

Метод двух указателей. 24-284

Apr 6th, 2024
986
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.17 KB | None | 0 0
  1. '''
  2. 284) Текстовый файл 24-280.txt состоит не более чем из 106 символов и содержит только
  3. заглавные буквы латинского алфавита. Определите максимальное количество идущих подряд
  4. символов, среди которых каждая из букв X, Y, Z встречается не более трёх раз.
  5. '''
  6. f = open('24data/24-280.txt')
  7. s = f.read().strip()
  8. n = len(s)
  9. L = -1
  10. R = -1
  11. kx = 0
  12. ky = 0
  13. kz = 0
  14. ma = None
  15. while 1:
  16.     if kx <= 3 and ky <= 3 and kz <= 3:
  17.         R += 1
  18.         if R == n:
  19.             break
  20.         if s[R] == 'X':
  21.             kx += 1
  22.         if s[R] == 'Y':
  23.             ky += 1
  24.         if s[R] == 'Z':
  25.             kz += 1
  26.     if kx > 3 or ky > 3 or kz > 3:  # строго без el
  27.         L += 1
  28.         if s[L] == 'X':
  29.             kx -= 1
  30.         if s[L] == 'Y':
  31.             ky -= 1
  32.         if s[L] == 'Z':
  33.             kz -= 1
  34.     if kx <= 3 and ky <= 3 and kz <= 3:
  35.         k = R - L  # строго без + 1
  36.         if ma is None or k > ma:
  37.             ma = k
  38. print(ma)
  39.        
  40.            
  41.  
Advertisement
Add Comment
Please, Sign In to add comment