fork download
  1. """дана последовательность чисел (например 112222555555444), нужно написать функцию которая выводит самую длинную подпоследовательность одинаковых чисел в этой последовательности, также должны выводиться индексы начала и конца этой последовательности """
  2.  
  3.  
  4. sequence = "1122225555554444444444"
  5. tmp_max = 0
  6. final_max = 0
  7.  
  8. tmp_head = 0
  9. tmp_last_index = 0
  10.  
  11. last_index = 0
  12. head = 0
  13.  
  14.  
  15. for i in range(len(sequence)):
  16. for k in range(len(sequence)):
  17. if sequence[i]==sequence[k]:
  18. #если совпало - либо наткнулись на символ i, либо начали проходить по последовательности
  19.  
  20. #временное начало последовательности = число, которое мы берем для сравнивания
  21. tmp_head = i
  22. #увеличиваем длину максимальной последовательности
  23. tmp_max+=1
  24. #индекс последнего элемента = последнему совпадению последовательности
  25. tmp_last_index = k
  26.  
  27. #если временное кол-во совпадений>финального, то присваиваем основному кол-ву совпадений, голове и концу значения временных
  28. if tmp_max>final_max:
  29. final_max = tmp_max
  30. head = tmp_head
  31. last_index = tmp_last_index
  32.  
  33. #обнуляем счетчики
  34. tmp_max=0
  35. tmp_head=0
  36. tmp_last_index=0
  37.  
  38. print("начало ", head, "конец ", last_index)
  39. print("Последовательность: ", sequence[head:(last_index+1)])
  40.  
Success #stdin #stdout 0.02s 9984KB
stdin
Standard input is empty
stdout
начало  12 конец  21
Последовательность:  4444444444