(Python, Java) 리트코드 - Longest Substring Without Repeating Characters
[문제 링크]
Python 풀이
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
start = max_length = 0
idx_store = dict()
for idx, letter in enumerate(s):
value = idx_store.get(letter)
if value is None or value < start:
max_length = max(max_length, idx - start + 1)
else:
start = value + 1
idx_store[letter] = idx
return max_length
Java 풀이
import java.util.HashMap;
import java.util.Map;
class Solution {
public int lengthOfLongestSubstring(String s) {
Map<Character, Integer> idxMap = new HashMap<>();
int start = 0;
int maxLength = 0;
for (int idx = 0; idx < s.length(); idx++) {
char key = s.charAt(idx);
if (idxMap.containsKey(key) && idxMap.get(key) >= start) {
start = idxMap.get(key) + 1;
} else {
maxLength = Math.max(maxLength, idx - start + 1);
}
idxMap.put(key, idx);
}
return maxLength;
}
}