首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

重复字符长子

今天和大家分享题目是,给定一个字符,找出不含有重复字符长子长度。具体示例如下。...比如:“abcabcbb”找到是“abc”,长度为3,而“bbbbb”找到是“b”,长度为1,那么“abcabwbbd”字符是什么? 小伙们想一想,这道题应该怎么解决呢?...我思路是这样: 1.首先通过定义函数方法来解决; 2.将所有符合题目要求字符放在一个空列表中; 3.定义两个参数,参数i作用是在给定字符个数范围内遍历取值; 4.参数j作用是,检测当前字符是否已经在字典中存在索引...,如有检测到已经保存有索引并且索引值大于等于子起始位置,则表明移动j时,和i之间出现了重复字符,此时对比子长度,并保留大长度。...语法是:str.join(sequence),sequence——要连接元素序列。 返回值:返回通过指定字符连接序列中元素后生成新字符

65130
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    重复字符长子

    1.题目 给定一个字符,请你找出其中不含有重复字符长子 长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为重复字符长子是 "abc",所以其长度为 3。...示例 2: 输入: "bbbbb" 输出: 1 解释: 因为重复字符长子是 "b",所以其长度为 1。...2.2图解 计算完第一个字符,目前重复字符长子是a,所以l=1 计算完第二个字符,目前重复字符长子是ab,所以l=2 计算完第三个字符,目前重复字符长子是abc,所以l=3 计算完第四个字符...,删除a,以及a之前字符,目前重复字符长子是bca,所以l=3 计算完第五个字符,删除b,以及b之前字符,目前重复字符长子是cab,所以l=3 计算完第六个字符,删除c,以及c之前字符...,目前重复字符长子是abc,所以l=3 计算完第七个字符,删除b,以及b之前字符,目前重复字符长子是cb,所以l=2 计算完第八个字符,删除b,以及b之前字符,目前重复字符长子

    70510

    重复字符长子

    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[

    81220

    重复字符长子

    定义一个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); //保存最后一个该结点位置;

    41074

    python 重复字符长子

    给定一个字符,请你找出其中不含有重复字符 最长子 长度。 示例 1: 输入: "abcabcbb" 输出: 3  解释: 因为重复字符长子是 "abc",所以其长度为 3。...示例 2: 输入: "bbbbb" 输出: 1 解释: 因为重复字符长子是 "b",所以其长度为 1。...示例 3: 输入: "pwwkew" 输出: 3 解释: 因为重复字符长子是 "wke",所以其长度为 3。     ...重复字符长子 class Solution:     def lengthOfLongestSubstring(self, s):         """         :type s:...重复字符长子 30. 串联所有单词 76. 最小覆盖子 159. 至多包含两个不同字符长子 209. 长度最小子数组 239. 滑动窗口最大值 567.

    2.2K20

    Leetcode 重复字符长子

    重复字符长子 给定一个字符 s ,请你找出其中不含有重复字符长子 长度。 我思路 & 实现 使用两个指针,分别为头指针和尾指针。...头指针指向重复字符头部,一个指向子尾部,初始时,两个指针都指向字符第一个元素。...维护一个哈希表(查找效率高),存放当前子已有元素 尾指针检查当前所指元素是否在当前子中出现过(查找哈希表中是否有当前元素),如果不存在,将当前元素存入哈希表,尾指针后移,并更新最大长度;如果存在,说明已经找到了一个重复字符...优化 优化了之前代码,性能大大提高 之前代码在找到一个重复字符后,采用make重新创建一个map方法来清空原map,这个操作是费时 由于采用了创建新map来清空map,导致尾指针在寻找下一个重复字符时需要返回到与头指针一样位置...,这样就多了不必要遍历,以及往map中添加元素操作,很费时 在已经找到一个重复字符之后,在头指针右移过程中,同时删除map中相关元素 这样就不需要新创建一个新map,也大大减少空间复杂度,

    14730

    求解重复字符长子

    定义一个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); //保存最后一个该结点位置;

    27920

    LeetCode重复字符长子

    题目 今天带来是第三题: ? 一如既往通过题目我们可以了解一些信息`子`和`子序列`[1],那么什么是子,什么是子序列呢?...什么是子 中任意个连续字符组成子序列称为该 对于一个字符变量,例如"adereegfbw",它就是像"ader"这样可以从中找到连续字符。...字符"adereegfbw"本身也属于它本身最长。...ab:a、b、ab和一个空子共4个即(2+1+1)个,abc:a、 b、 c、 ab、 bc 、abc和一个空子 共(3+2+1+1)个,所以若字符长度为n,则子个数就是[n*(...言归正传题目中还有两个关键字不含有重复字符和最长 这里采用数组方法,定义一个空队列,判断是否存在字符,如果重复则截取数组,如果不存在往定义好队列里添加。

    65120

    【LeetCode】重复字符长子

    题目描述 给定一个字符,请你找出其中不含有重复字符长子 长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为重复字符长子是 "abc",所以其长度为 3。...示例 2: 输入: "bbbbb" 输出: 1 解释: 因为重复字符长子是 "b",所以其长度为 1。...示例 3: 输入: "pwwkew" 输出: 3 解释: 因为重复字符长子是 "wke",所以其长度为 3。...题目解析 这道题目标是找出最长子,并且该子必须不包含重复字符,而且这个子必须是原字符中连续一部分(见示例3中解释说明)。...拿到题目时先不要心急想什么骚操作,我们先从普通操作开始把题目解出来,然后再来看如何优化。

    1.1K10

    3.重复字符长子

    定义一个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); //保存最后一个该结点位置;

    20420

    Python 求解--重复字符长子

    这是一个比较经典算法题,给定一个字符 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 是字符长度。

    50510

    LeetCode(一)——重复字符长子

    题目: 题目:https://leetcode.cn/problems/longest-substring-without-repeating-characters/ 题目大意: 在一个字符重寻找没有重复字母长子...思路: 采用滑动窗口思想进行解题,滑动窗口右边界不断右移,只要没有重复字符,就持续向右扩大窗口边界;一旦窗口内出现了重复字符,就需要缩小左边界,直到重复字符移出了左边界,然后继续移动滑动窗口右边界...注意点: 无论有无重复字符,右边界都会向右持续移动 重复字符出现在窗口内idx>=left,才需要进行滑动左边界,如果出现在窗口外,就不要滑动左边界。...make(map[byte]int) for right < len(s) { if idx, ok := indexes[s[right]]; ok { // 这里需要注意,只有重复字符在窗口内部才需要滑动左边界

    18130
    领券