美文网首页
最大子串

最大子串

作者: 罂粟1995 | 来源:发表于2020-09-07 11:22 被阅读0次

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters

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

    示例 1:

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

    解题思路:

    滑动窗口解法。维护一个数组为“滑动窗口”,遍历字符串,当滑动窗口中没有出现过当前字符时,将当前字符push进滑动窗口,如果滑动窗口中出现过当前字符,则需要先将滑动窗口中该字符以及该字符之前的所有字符删除,再将当前字符push进入滑动窗口。

    a b c a c 
    遍历a  滑动窗口:a 
    遍历b  滑动窗口:a b
    遍历c  滑动窗口:a b c
    遍历a  滑动窗口:b c a
    遍历c  滑动窗口:a c
    

    解题:

    /**
     * @param {string} s
     * @return {number}
     */
    var lengthOfLongestSubstring = function(s) {
        var arr = [],max = 0;
        for(var i = 0;i < s.length;i++) {
            if(arr.indexOf(s.charAt(i)) !== -1) {
                var index = arr.indexOf(s.charAt(i));
                arr.splice(0, index+1);
            }
            arr.push(s.charAt(i));
            max = Math.max(max,arr.length);
        }
        return max;
    };
    

    相关文章

      网友评论

          本文标题:最大子串

          本文链接:https://www.haomeiwen.com/subject/dzpkektx.html