给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

示例1:

输入:s = “abcabcbb” 输出:3

示例2:

输入:s = “bbbbb” 输出:1

示例3:

输入:s = “pwwkew” 输出:3

提示:

  • 0 <= s.length <= 5 * 104
  • s 由英文字母、数字、符号和空格组成

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

滑动窗口+map

  1. function lengthOfLongestSubstring(s: string): number {
  2. let maxLen = 0, i = 0;
  3. const map = new Map();
  4. for (let j = 0; j < s.length; j++) {
  5. const curr = s[j];
  6. map.set(curr, (map.get(curr) || 0) + 1);
  7. while(map.get(curr) > 1) {
  8. map.set(s[i], map.get(s[i]) - 1);
  9. i++;
  10. }
  11. maxLen = Math.max(j - i + 1, maxLen);
  12. }
  13. return maxLen;
  14. };