leetcode 03
2025-07-20 11:51:00
5min
https://leetcode.com/problems/longest-substring-without-repeating-characters/description/?envType=study-plan-v2&envId=top-interview-150
class Solution {
public int lengthOfLongestSubstring(String s) {
if(s.length() == 0) return 0;
Map<Character, Integer> s_map = new HashMap<>();
List<String> ans = new ArrayList<>();
int w_start = 0, w_end = 1;
for(int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if(s_map.containsKey(c) && s_map.get(c) >= w_start) {
ans.add(s.substring(w_start, w_end - 1));
w_start = s_map.get(c) + 1;
}
s_map.put(c, i);
w_end++;
}
// last one
char c = s.charAt(s.length() - 1);
if(s_map.containsKey(c) && s_map.get(c) >= w_start) {
ans.add(s.substring(w_start, w_end - 1));
} else {
ans.add(s.substring(w_start, w_end));
}
int max_len = 0;
for(int i = 0; i < ans.size(); i++) {
if(max_len < ans.get(i).length()) {
max_len = ans.get(i).length();
}
}
return max_len;
}
}