훈훈훈

파이썬(알고리즘) : 중복되지 않은 문자로 이루어진 제일 긴 단어의 길이 본문

파이썬/알고리즘

파이썬(알고리즘) : 중복되지 않은 문자로 이루어진 제일 긴 단어의 길이

훈훈훈 2020. 2. 13. 11:01

# 문제

중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환

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 값을 반환

 

 

Comments