Given a string s, find the length of the longest substring without repeating characters.
중복되지 않는 charter로 가장 긴 substring을 만드는 문제
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
index = 0
substring = []
n = len(s)
max_length = 0
while index < n:
ch = s[index]
if ch not in substring:
substring.append(ch)
else:
max_length = max(len(substring), max_length)
ch_idx = substring.index(ch)
substring = substring[ch_idx+1:]+[ch] # 1
index += 1
max_length = max(len(substring), max_length) # 2
return max_length
Comment 1:
abcdeff
에서 abcdef
까지 가면 중복없이 현재 인덱스까지 최대 길이로 생각했다. 근데 시작중복문자 다음부터 다시 subtring을 만들 수 있다.
dvdf
가 반례임.
Comment 2:
길이가 1인 경우 max_lentgh를 while loop 밖에서 구해야한다.