力扣----3. 无重复字符的最长子串(JavaScript, Java实现)

题目描述:

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

事例:

输入: "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

事例:

输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

事例:

输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。


JavaScript实现
/**
 * @param {string} s
 * @return {number}
 */
const lengthOfLongestSubstring = function (s) {
  let length = s.length;
  let max = 0, j = 0;
  const list = new Set();
  for (let i = 0; i < length; i++) {
    i !== 0 && list.delete(s.charAt(i-1));
    while (j < length && !list.has(s.charAt(j))) {
      list.add(s.charAt(j));
      j++;
    }
    max = Math.max(max, j-i)
  }
  return max;
};

敏感词汇:

重复字符 -----> 散列表(涉及到次数要用散列表,字符作为key,出现次数作为value)

子串       -----> 滑动窗口


Java实现


待补充


原文地址:https://www.cnblogs.com/manru75/p/13023498.html