All files / problems/lengthOfLongestSubstring index.ts

100% Statements 47/47
80% Branches 4/5
100% Functions 1/1
100% Lines 47/47

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 481x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 5x 5x 5x 5x 5x 5x 25x 25x 25x 25x 25x 14x 25x 11x 11x 25x 5x 5x 5x 1x 1x  
// 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.
 
/**
 * @param {string} s
 * @return {number}
 */
const lengthOfLongestSubstring = (s: string): number => {
  if(!s) return 0;
 
  let result = 1;
  let left = 0;
 
  for (let r = 1; r < s.length; r++) {
    const current = s[r];
    const subStr = s.slice(left, r);
    const indexOfR = subStr.indexOf(current);
  
    if (indexOfR >= 0) {
      left += indexOfR + 1;
    } else {
      result = Math.max(subStr.length + 1, result);
    }
  }
 
  return result;
};
 
export default lengthOfLongestSubstring;