leetcode 03

2025-07-20 11:51:005min

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;
    }
}

留言