LeetCode每日一题(2020.4.8)

无重复字符的最长子串

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

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

解答

一、非固定宽度滑动窗口算法

let lengthOfLongestSubstring = function(str) {
    if (!str.length) return 0;
    let tmpStr = '';   
    let maxStrLen = 0;   
    let left = 0;  
    for (let i = 0; i < str.length; i++) {
        if (tmpStr.indexOf(str[i]) !== -1) {
            left += (str.slice(left, i).indexOf(str[i]) + 1);
            continue
        }
        tmpStr = str.slice(left, i + 1);
        maxStrLen = Math.max(maxStrLen, tmpStr.length)
    }
    return maxStrLen
};

运行结果:
在这里插入图片描述

你可能感兴趣的:(#,LeetCode)