text: /*
  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.
  */
  
  
  let lengthOfLongestSubstring = string => {
    if ( string.length === 0 ) {
      return 0;
    }
  
    let map = {},
      max = 0,
      length = 0;
  
    for ( let i = 0; i < string.length; ++i ) {
      if ( string.charAt( i ) in map ) {
        length = Math.max( length, map[ string.charAt( i ) ] + 1 );
      }
      map[ string.charAt( i ) ] = i;
      max = Math.max( max, i - length + 1 );
    }
    return max;
  };
  module.exports = lengthOfLongestSubstring;
  