-
3. Longest Substring Without Repeating CharactersProgramming/leetcode 2021. 2. 22. 20:04728x90
가장 긴 부분 문자열 찾는 문제, 단 문자열 안에 중복이 없어야 한다.
나는 for문 2번 돌려서 풀긴했는데, 만약 input의 길이가 증가하면 시간 초과 날것이다.
def lengthOfLongestSubstring(self, s: str) -> int: ans = 0 for idx, ch in enumerate(s): cnt = 0 c = "" for ch in s[idx:]: if ch in c: break else: c += ch cnt += 1 ans = max(ans, cnt) return ans
이전에 배운 hash를 여기서 사용하면 for문 한번과 hash 접근으로 가능하다.
def lengthOfLongestSubstring(self, s: str) -> int: max_length = start = 0 used = {} for idx, ch in enumerate(s): # 이미 Dict에 있는경우 start값을 갱신해주자 if ch in used and start <= used[ch]: start = used[ch]+1 else: max_length = max(max_length, idx-start+1) used[ch] = idx return max_length
속도 차이가 300ms이상 나는 것을 볼 수 있다.
'Programming > leetcode' 카테고리의 다른 글
DFS, BFS (0) 2021.02.23 347. Top K Frequent Elements (0) 2021.02.22 771. Jewels and Stones (0) 2021.02.22 706. Design HashMap (0) 2021.02.22 23. Merge k Sorted Lists (0) 2021.02.19