leetcode 第3题 无重复字符的最长子串

122 阅读1分钟

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

我的JavaScript解法

var lengthOfLongestSubstring = function(s) {
    let subString = ''
    let maxLength = 0
    for (i=0; i < s.length; i++) {
        let index = subString.indexOf(s[i])
        if(index > -1) {
           subString = subString.substring(index+1)
        }
        subString = subString + s[i]
        if (maxLength < subString.length) {
            maxLength = subString.length
        }
    }
    return maxLength
};

解析: 利用 滑动窗口的方法,同时利用JavaScript 的字符串的有indexOf以及substring 方法,只用一个指针就可以实现滑动窗口

复杂度

  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(Σ)O(|Σ|), (Σ)(|Σ|) 是最长子串的大小