leetcode3:无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
更新于: 2021-12-19 12:57:29

示例1

输入: s = "abcabcbb" 输出:

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

 

问题分析

  1. 搜索字符串
  2. 最长字符串
  3. 记录max/str

我的实现

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function (s) {
  var max = 0;
  for (var i = 0; i < s.length; i++) {
    var len = getUniqLength(s.slice(i));
    if (len > max) {
      max = len;
    }
  }
  return max;
};

// 找出不重复最长的字符串
function getUniqLength(s) {
  var res = [];
  for (var i = 0; i < s.length; i++) {
    var val = s[i];
    if (!res.includes(val)) {
      res.push(val);
    } else {
      // 数组中已经存在,即中止搜索
      return res.length;
    }
  }
}

参考

https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/