Longest Substring Without Repeating Characters

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.

Solution

Java
class Solution {
    public int lengthOfLongestSubstring(String s) {
        if(s.length() < 2) return s.length();
        int l =0 ,r = 0;
        Map<Character,Integer> map = new HashMap<Character, Integer>();
        int longSeq = 1;
        while(r < s.length()) {
            char ch = s.charAt(r);
            if(!map.containsKey(ch)) map.put(ch, r);    
            else {
                l = Math.max((map.get(ch) + 1),l);
                map.put(ch,r);
            }
            r++;
            longSeq = Math.max((r-l), longSeq);
        }
        return longSeq;
    }
}
Agnibha Chandra