문자들의 연속된 길이 중 가장 긴 값을 리턴
from itertools import groupby
def long_repeat(data):
return max([len(list(g)) for k, g in groupby(data)], default=0)
print(long_repeat("aaaaaabbaddedb"))
라이브러리 없이 구현
아이디어
- 맨 앞에 있는 문자를 하나 빼놓고 시작 => 시작하자마자 같은 문자로 비교
- 문자비교
- 문자가 같다면 연속된 문자의 길이 증가
- 문자가 다르다면 이전까지 저장한 문자의 길이 업데이트 하고 새로운 문자 세팅
- 마지막 문자가 이전 문자와 다를 수 있기 때문에 반복문 종료 후 마지막 문자 업데이트
코드
input = "aaaaaabbaddedb"
result = ""
contiguous_current_word = input[0]
contiguous_cnt = 0
check_contiguous = [0 for _ in range(200)]
for char in input:
if char == contiguous_current_word:
contiguous_cnt += 1
else:
result += contiguous_current_word
result += str(contiguous_cnt)
if check_contiguous[ord(contiguous_current_word)] < contiguous_cnt:
check_contiguous[ord(contiguous_current_word)] = contiguous_cnt
contiguous_current_word = char
contiguous_cnt = 1
if check_contiguous[ord(contiguous_current_word)] < contiguous_cnt:
check_contiguous[ord(contiguous_current_word)] = contiguous_cnt
result += contiguous_current_word
result += str(contiguous_cnt)
print([(chr(i), value) for i, value in enumerate(check_contiguous) if value !=0])
print(result)