Code Kata #3

tycode·2021년 6월 30일
0

Code Kata

목록 보기
3/8

문제

String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.

str: 텍스트
return: 중복되지 않은 알파벳 길이 (숫자 반환)

예를 들어,

str = "abcabcabc"
return3
=> 'abc' 가 제일 길기 때문
str = "aaaaa"
return1
=> 'a' 가 제일 길기 때문
str = "sttrg"
return3
=> 'trg' 가 제일 길기 때문

답을 몰라서 검색했다.

해답 1

def get_len_of_str(s):
  if len(s)==0:
    return 0
  a=s[0]
  max_len = len(a)
  for i in range(len(s)):
    if s[i] in a:
      a = s[i]
    elif s[i] not in a:
      a += s[i]
    if max_len < len(a):
      max_len = len(a)
  return max_len

해답 2

def get_len_of_str(s):
	dct = {}
	max_so_far = curr_max = start = 0        
	for index, i in enumerate(s):         
		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)

0개의 댓글