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

Posted 来亦何哀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-03给定一个字符串,请你找出其中不含有重复字符的最长子串的长度相关的知识,希望对你有一定的参考价值。

开个新坑,leetcode上面做题目。下面是题目描述:

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

        示例 1:

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

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

        输入: "pwwkew"
        输出: 3
        解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
        请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 -->
子串呢,顾名思义,就是一连串不间断的,子序列是可以间断的。

下面是我注释了解题思路的答案,这个我没解出来,在网上搜索了一下答案,也都是些其他语言的解法,他们是用hashMap,js没有这个吧,不太一样,

我就关注了一下解题思路。

/**
             * @param {string} s
             * @return {number}
             */
            // 使用双指针解决 + hash
            // 定义一个map用来充当滑块,end往右边走
            // 如果map里没有s[end],就把s[end]丢到map里,同时刷新无重复字符的最大长度
            // 如果map里有s[end],那么就从左边开始删,直到把重复的那个值删掉,重新进入无重复的条件中
            var lengthOfLongestSubstring = function(s) {
                const len = s.length
                let hashMap = new Map()
                let start = 0
                let end = 0
                let maxLen = 0

                while (end < len) {
                    if (!hashMap.has(s[end])) {
                        hashMap.set(s[end++], 1)
                        maxLen = Math.max(maxLen, [...hashMap.keys()].length)
                    } else {
                        hashMap.delete(s[start++])
                    }
                }
                return maxLen
            };

            lengthOfLongestSubstring(‘abfcdfabcdbb‘)

这道题就到这里,我们做这种算法题呢,不是为了去什么bat公司,只是为了培养遇到了问题的思路,开拓思路,开阔眼见,如此而已

以上是关于leetcode-03给定一个字符串,请你找出其中不含有重复字符的最长子串的长度的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

Leetcode练习(Python):哈希表类:第3题:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

leetcode-python-03无重复字符的最长子串

leetcode-python-03无重复字符的最长子串