Toc
0 results found
Utone
无重复字符的最长子串
2018/10/17 Code javascript
/*
 *  无重复字符的最长子串
 *  leetcode 算法题3
 */

// 解法一
var map = {}
var head = 0
var i = 0
var max = 0
for (i; i < s.length; i++) {
  if (map[s[i]] >= head) {
    head = map[s[i]] + 1
  }
  map[s[i]] = i
  max = max > i - head + 1 ? max : i - head + 1
}
return max

// 解法二
const map = {}
let left = 0
let max = s.split('').reduce((max, v, i) => {
  /*
   * map[v] 初始为underfined,表明s[i]还没出现过,
   * 一旦map[v]有值了,且大于left,就将left的值设为map[v]后一位
   */
  left = map[v] >= left ? map[v] + 1 : left
  map[v] = i
  return Math.max(max, i - left + 1)
}, 0)
console.log(max)
打赏
支付宝
微信
本文作者:Utone
版权声明:本文首发于Utone的博客,转载请注明出处!