Algorithms and Data Structures/Coding Practices

LeetCode 3. Longest Substring Without Repeating Characters

brightlightkim 2022. 7. 16. 13:59

Given a string s, find the length of the longest substring without repeating characters.

 

Example 1:

Input: s = "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.

Example 2:

Input: s = "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.

Example 3:

Input: s = "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3.
Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.

 

Constraints:

  • 0 <= s.length <= 5 * 104
  • s consists of English letters, digits, symbols and spaces.
class Solution {
    public int lengthOfLongestSubstring(String s) {
        Map<Character, Integer> map = new HashMap<Character, Integer>();
        int j = 0;
        int res = 0;
        for(int i = 0; i < s.length(); i++){
            char c = s.charAt(i);
            if (map.containsKey(c) && map.get(c) >= j){
                res = Math.max(res, i - j);
                j = map.get(c) + 1;
            } 
            map.put(c, i);
        }
        return Math.max(res, s.length() - j);
    }
}