훈훈훈
파이썬(알고리즘) : 중복되지 않은 문자로 이루어진 제일 긴 단어의 길이 본문
# 문제
중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환
ex)
1. input : abcabc / output : 3 ('abc'의 길이)
2. input : codding / output : 4 ('ding'의 길이)
# 정답
def get_len_of_str(string):
'''
dct : key(문자열 요소), value(인덱스)
max_so_far : 가장 긴 단어의 길이
curr_max : 중복 발견 후 문자열 길이 저장
start : 중복된 요소의 인덱스
'''
dct = {}
max_so_far = curr_max = start = 0
for index, i in enumerate(string):
if i in dct and dct[i] >= start:
max_so_far = max(max_so_far, curr_max)
curr_max = index - dct[i]
start = dct[i] + 1
else:
curr_max += 1
dct[i] = index
return max(max_so_far, curr_max)
# 풀이
- 문자열 각각의 요소들마다 문자열 길이를 비교하기 위해 딕셔너리(key : 문자열 요소, value : 문자열 인덱스) 생성
- 중복을 만나면 문자열 길이 비교 후 max 값을 반환
'파이썬 > 알고리즘' 카테고리의 다른 글
파이썬(알고리즘) :: m번째 숫자를 제거할때, 최종적으로 남은 숫자 반환(큐 문제) (0) | 2020.04.09 |
---|---|
파이썬(알고리즘) :: m개의 숫자를 제거할때, 가장 큰 수 출력 (스택 문제) (0) | 2020.04.07 |
파이썬(알고리즘) :: 오름차순으로 정렬 후 위치 찾기 (이분 검색) (0) | 2020.04.05 |
파이썬(알고리즘) :: 회문 문자 검사 (탐색 문제) (0) | 2020.04.05 |
파이썬(알고리즘) : 공통된 시작 단어(prefix)를 반환하기 (0) | 2020.02.14 |
Comments