解题思路的思考: 以abcabcbb为例,找出以每个字符结束,不包含重复字符的最长子串。那么其中最长的那个字符串即为答案。...对于示例一中的字符串,我们列举出这些结果,其中括号中表示选中的字符以及最长的字符串: 以 [a]bcabcbb 结束的最长字符串为[a]bcabcbb,长度为1 以 a[b]cabcbb 结束的最长字符串为...[ab]cabcbb,长度为2 以 ab[c]abcbb 结束的最长字符串为[abc]abcbb,长度为3 以 abc[a]bcbb 结束的最长字符串为a[bca]bcbb,长度为3 以 abca[b]...cbb 结束的最长字符串为ab[cab]cbb,长度为3 以 abcab[c]bb 结束的最长字符串为abc[abc]bb,长度为3 以 abcabc[b]b 结束的最长字符串为abcab[cb]b,长度为...,表示:比如abcabcaa 现在到第4个位置也就是a ,li表示上次a出现的位置 li = 1 si: startindex的缩写,表示以i-1位置字符结尾的最长不重复字符串的开始索引(最左索引)
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。...示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。...示例 3: 输入: s = "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。...请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。...示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。...示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 ...无重复字符的最长子串 30. 串联所有单词的子串 76. 最小覆盖子串 159. 至多包含两个不同字符的最长子串 209. 长度最小的子数组 239. 滑动窗口最大值 567....针对003 无重复字符的最长字串,参考如上答案,C++版本。编者很辛苦,没有给出具体解释,我想说出自己的一些想法。 1.对于大多数人比较纠结的一点 while (lookup.find(s[i]) !
Longest Substring Without Repeating Characters 已知一个字符串,求用该字符串的无重复字符组成的最长子串的长度。...算法设计 利用滑动窗口 双指针维护滑动窗口,整个过程中,使用begin与i维护一个窗口,该窗口中的子串满足题目 条件(无重复的字符),窗口线性向前滑动,整体时间复杂度为O(n)。...1.设置一个记录字符数量的字符哈希,char_map; 2.设置一个记录当前满足条件的最长子串变量word; 3.设置最长满足条件的子串的长度result; 4.设置两个指针(记作指针i与指针begin...)指向字符串第一个字符; 5.i指针向后逐个扫描字符串中的字符,在这个过程中,使用char_map记录字符数量 如果word中没出现过该字符:对word尾部添加字符并检查result是否需要更新;...否则:begin指针向前移动,更新char_map中的字符数量,直到字符s[i]的数量为1;更新word,将 word赋值为begin与i之间的子串。
大家好,又见面了,我是你们的朋友全栈君。 原题链接给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。...示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。...示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。...示例 3: 输入: s = "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。...请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
这是一个比较经典的算法题,给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。...只需要返回最大长度即可 例子: 示例 1:输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。...示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。...解法一: 明确记录两个信息,一个无重复字符的内容max_string,一个是无重复字符的长度max_length, 首先对字符串进行遍历,如果遍历的字符元素不在 max_string 中,表示未出现重复字符串...重复以上步骤直到 right 到达字符串 s 的末尾。最终得到的 max_length 即为所求的最长子串长度。 这种方法的时间复杂度为 O(n),其中 n 是字符串的长度。
无重复字符的最长字串是一道字符串处理算法的题目,在日常编程中,处理字符串是常见任务。用Python来实现leetcode这道算法题,该题目会涉及到一个概念“滑动窗口”。 ?...二、解题思路 先来定义一下“子串”,根据题目描述,“子串”就是字符串中截取某一部分,长度从1到该字符串的长度。...”的概念和获取方法,自然而然的就得到了最朴素也是最“暴力”的解法:遍历字符串得到所有“子串”,然后判断每个“子串”是否有重复字符,最终就会得到无重复最长子串了。...这个“暴力”算法中,计算所有子串的时间复杂度是 O(n2),而判断一个子字符串是否有重复字符,又要从头到尾遍历一遍该字符串,所有最终的时间复杂度可以达到 O(n3)。...结合题目中的例子“abcabcbb”这个字符串,我们来看看如何找它的无重复最长子串。 首先,我们定义窗口的两端:begin和end,分别表示要找的子串的开头和结尾。
题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。...示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。...示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。...题目解析 这道题的目标是找出最长子串,并且该子串必须不包含重复字符,而且这个子串必须是原字符串中连续的一部分(见示例3中的解释说明)。...然后,我们将to的指向往后移动,并判断新遍历的字符是否已经存在于子串中,如果不存在,则将其加入子串中,并将length进行自增。 ? 直到找到一个已存在于子串中的字符,或者to到达字符串的末尾。
定义四个变量,最大长度a1及对应的数组a2,临时最大长度b1及对应的数组b2,循环字符串,判断每个循环体c是否在临时最长数组b2内,在的话就b1+1,同时将c追加到b2内,否则将b1置为1,b2清空,然后追加...再将a1和a2取最大值,b1和b2取最大值,即得到了最大长度与之对应的数组 代码: function findMaxString(str) { if (typeof str !
今天和大家分享的题目是,给定一个字符串,找出不含有重复字符的最长子串的长度。具体示例如下。...比如:“abcabcbb”找到的是“abc”,长度为3,而“bbbbb”找到的是“b”,长度为1,那么“abcabwbbd”的子字符串是什么? 小伙们想一想,这道题应该怎么解决呢?...我的思路是这样的: 1.首先通过定义函数的方法来解决; 2.将所有符合题目要求的字符串放在一个空的列表中; 3.定义两个参数,参数i的作用是在给定字符串个数的范围内遍历取值; 4.参数j的作用是,检测当前字符是否已经在字典中存在索引...,如有检测到已经保存有索引并且索引值大于等于子串的起始位置,则表明移动j时,和i之间出现了重复字符,此时对比子串长度,并保留大的子串长度。...print(i,",") 输出结果: 0 , i= 0 2 , i= 1 4 , i= 2 6 , i= 3 8 , i= 4 do something. end. join函数 用于将序列中的元素以指定的字符串连接生成一个新的字符串
1.题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。...示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。...2.2图解 计算完第一个字符,目前无重复字符的最长子串是a,所以l=1 计算完第二个字符,目前无重复字符的最长子串是ab,所以l=2 计算完第三个字符,目前无重复字符的最长子串是abc,所以l=3 计算完第四个字符...,目前无重复字符的最长子串是abc,所以l=3 计算完第七个字符,删除b,以及b之前的字符,目前无重复字符的最长子串是cb,所以l=2 计算完第八个字符,删除b,以及b之前的字符,目前无重复字符的最长子串是...,但需要保证这两个指针对应的子串中没有重复的字符。
一、描述 给定一个字符串,请你找出其中不含有重复字符的 最长 子串 的长度。...输入: "abcabcbb" 输出: 3 解释: 最长子串是 "abc" 同类:给一个字符串str,找到str中最长的连续子串(不区分大小写),返回其长度。 思考 60秒 。。。...二、思路 如何判断一个子串没有重复字符--->遍历过程中 判断[start,i] 没有重复记录 是统计个数做到 如果重复多次,舍去最早出现的。 这就是滑动窗口。...三、代码 class Solution { public: //看到这个题目 输入: "bbbbb" ,我马上想到map 统计每个字符个数, //这里让统计key 可能是任意字符长度子串...,用每个字符作为key,永远不可能越界。 //如果重复出现。舍去后面字符重新计算。
---- 题目描述 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。...示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。...示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 注意,你的答案必须是子串的长度,”pwke” 是一个子序列,不是子串。...队列实现 本题是计算最长的不重复子串,而子串肯定是连续的。我们肯定都能想到,要遍历下输入的字符串,那么遍历的过程中,我们需要做什么呢?既然是计算字串的长度,那么我们遍历的过程中就要将字串保存下来。...| 力扣(LeetCode) 无重复字符的最长子串 | 题解(LeetCode)
定义一个map数据结构存储(k,v),其中key值为字符,value值为字符位置+1,加1表示从字符位置后一个才开始不重复 我们定义不重复子串的开始位置为start,结束位置为end 随着end不断遍历向后...,会遇到与【start,end】区间内字符相同的情况,此时将字符作为key值,获取其value值,并更新start,此时【start,end】区间内不存在重复字符 无论是否更新start,都会更新其map...char element=s.charAt(end); if (map.containsKey(element)){ //为了防止连续重复字符...,这里要进行一次判断 //+1表示该元素后一个元素才是不重复字符串的开始 start=Math.max(map.get(element)+...1,start); } max=Math.max(max,end-start+1); //保存最后一个该结点的位置;
无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。...示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。...示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。...示例 3: 输入: s = "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。...来存储最长子串的长度,这样内存占用会更小; 最长子串其实就可以看成滑动窗口,子串的左下标 i 就是窗口的左侧位置,子串的右下标 j 就是窗口的右侧位置; 当遍历字符串的时候,就可以通过左坐标 i 来控制窗口左侧位置的移动
JavaScript实现LeetCode第3题:无重复字符的最长子串 题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。...示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。...示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。...示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。...解题思路 这是一道动态规划题目 1.声明两个变量 currentString:当前无重复字符的子串, max:无重复字符的最大子串长度 2.判断当前的最长串中是否有该字母s[i], 如果没有,则加上s[
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。...示例 2: 输入: s = “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。...0 { return 0; } int i = 0, j = 0;//i指向无重复字符子串的第一个位置,j指向无重复字符子串的最后一个字符d的后面一个位置 int max =1;/.../假设当前的无重复字符串最长为1,每一次找到更长子串长度就更新max for (; j <s.length(); j++)//对s串进行遍历操作 { //检查当前i---j这个区间里面有没有重复元素...//每次新加入一个元素,就把新加入的元素与前面字符串进行比较,确保没有与前面字符串中某个字符重复 //如果当前j指向的字符和子串中某个字符重复,就把i移动到j的位置 //将新加入的字符与前面的无重复子串进行比较
暴力枚举法:枚举所有可能的子串并检查它们是否有重复的字符。时间复杂度为 O(n3)。 滑动窗口法:维护一个滑动窗口,该窗口包含的子串没有重复的字符。我们向右移动窗口,并在每个位置更新最长的无重复子串。...- i) else: lookup.remove(s[i]) i += 1 return ans 哈希表法:使用哈希表来存储每个字符最后出现的位置...右指针 j 用于扩展当前窗口,而左指针 i 用于排除不在窗口中的旧字符。时间复杂度为O(n)。...[s[j]], i) ans = max(ans, j - i + 1) lookup[s[j]] = j + 1 return ans 无论使用哪种算法,它们的时间复杂度都为...O(n),其中 n 是字符串的长度。
描述 给定一个字符串 s , 找出最长未重复的子字符串的长度。 2. 示例 示例 1 输入:s = "abcabcbb" 输出:3 解释:最长未重复子字符串答案是"abc",长度为 3。...示例 2 输入:s = "bbbbb" 输出:1 解释:最长未重复子字符串答案是"b",长度为 1。...示例 3 输入:s = "pwwkew" 输出:1 解释:最长未重复子字符串答案是"wke",长度为 3。注意答案必须是子字符串,“pwke” 是一个子列,而不是一个子字符串。...maxLen = max(maxLen, i - startIdx + 1) } return maxLen } } 主要思想:使用字典存储非重复子字符串的下一个可能有效字符的位置...,然后迭代字符串更新 maxLen、dictionary 和遇到重复时的 startIdx。
力扣 题目描述 输入一个字符串(只包含 a~z 的字符),求其最长不含重复字符的子字符串的长度。例如对于 arabcacfr,最长不含重复字符的子字符串为 acfr,长度为 4。
领取专属 10元无门槛券
手把手带您无忧上云