学习
实践
活动
专区
工具
TVP
写文章

字符串包含重复字符的最长子串

今天我遇到一个问题,题目描述如下:         一个字符串,求这个字符串包含重复字符的最长子串的长度,如abba返回2,aaaaabc返回3,bbbbbbb返回1,等等上面是测试用例。 那么我解决这个问题的思路有两种: 第一种是,设一个头指针和一个尾指针,头指针指向,包含重复字符子串的第一个字符,尾指针指向包含重复子串的最后一个字符,用一个hashset保存已经出现过的字符,例如abba 如果集合中已经包含了这个字符,那么用尾指针的索引减去头指针的索引,会求出一个子串的长度,如果该长度大于当前的最大长度,那么就令当前最大长度等于目前的长度,然后清空集合,头指针向后移动一个字符,尾指针再指向头指针,然后重复上面的过程 maxLength(str)); } } 第二种思路比较巧妙,思路是这样的这次要以一个hashmap作为辅助,map的key存储的是字符,value存储的是该字符当前的位置,首先设置一个头指针,指向字符串开头 ,那么从开始遍历字符串,如果map当中包含这个字符,那么用这个字符当前所在的位置减去头指针的位置,然后与最大长度做比较,选打的成为最大长度,然后把当前字符的以及位置放入map,以abba为例,头指针指向

11020
  • 广告
    关闭

    上云精选

    2核2G云服务器 每月9.33元起,个人开发者专属3年机 低至2.3折

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

    python字符串重复

    参考链接: Python字符串 python字符串重复 先将第一个字符串加入另一个空字符串“temp”;然后从第二个字符串开始与temp中已经加入的字符串对比,若已经存在则不加入temp字符串,若无加入字符串 使用python实现  #只去除字符串两个字符组成的重复字符串 #测试样例:派克盖伦诺手盖伦派克盖伦盖伦 #样例输出:派克盖伦诺手 str2="派克盖伦诺手盖伦派克盖伦盖伦" def Remove_Same =str1[2*i:2*i+2] :                  flag=1#若之前有元素想同则标记1                 break         if flag==0 :#无重复元素则加入               temp=temp+str1[2*i:2*i+2]          else :#重复元素,flag置0进入下一个循环              flag=0     return

    60820

    【LeetCode】无重复字符串最长子串

    题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 题目解析 这道题的目标是找出最长子串,并且该子串必须包含重复字符,而且这个子串必须是原字符串中连续的一部分(见示例3中的解释说明)。 这里,我们找到了一个重复的s,序号为7,此时的子串为frankis,将此时的子串长度与最大子串长度相比较(目前为0),如果比最大子串长度大,则将最大子串长度设置为当前子串长度7。 ?

    56710

    Day12-字符串-重复的DNA序列

    二 来吧上题吧 Q:将DNA序列看作是只包含【'A', 'C', 'G', 'T'】4个字符的字符串。现有一个这样的字符串,找到所有长度为10且出现次数超过1的子串。 比如:对于字符串“AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT” 输出:["AAAAACCCCC", "CCCCCAAAAA"] 三 分析一波 应该还有更简洁的算法,但今天时间着实是紧 我的解法,这样处理逻辑: 建立一个<单词,单词数量>的哈希map: word_map 遍历字符串,取,从当前下标开始,长度为10的子串,赋为临时变量word 若当前子串word出现在哈希 map中,则累加次数,若没出现过,将次数初始化为1 遍历完字符串后,再从word_map中取出单词,即key,添加进最后的字符串数组中 即从头遍历一遍字符串,时间复杂度O(N),也还行 word] += 1;//累加出现次数 } else{ word_map[word] = 1; } } //for循环结束后,已遍历完字符串

    36410

    LeetCode - #3 最长未重复字符串

    该算法题解的 github 仓库地址是:https://github.com/soapyigu/LeetCode-Swift[2] 积跬步,无以至千里;积小流,无以成江海。 1. 描述 给定一个字符串 s , 找出最长未重复的子字符串的长度。 2. 示例 示例 1 输入:s = "abcabcbb" 输出:3 解释:最长未重复字符串答案是"abc",长度为 3。 示例 2 输入:s = "bbbbb" 输出:1 解释:最长未重复字符串答案是"b",长度为 1。 示例 3 输入:s = "pwwkew" 输出:1 解释:最长未重复字符串答案是"wke",长度为 3。注意答案必须是子字符串,“pwke” 是一个子列,而不是一个子字符串。 ,然后迭代字符串更新 maxLen、dictionary 和遇到重复时的 startIdx。

    16020

    算法练习之寻找不重复最长字符串

    作者 | 陌无崖 转载请联系授权 题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 一问一答 遍历字符串找不同可以先排序吗 不可以,在题目的要求下,无重复的最长子串必须是连续的在原来的字符串顺序保持不变的情况下 如何判断字符串中不重复 利用Golang中strings包的Contain 函数判断,原序列是否包含子序列 假设 假设字符串长度为0 返回值应该为0 假设字符串长度为1 返回值为1 假设字符串长度为2 需要将第2个字符和第一个字符作比较,是否重复,如果重复,最长的长度为1不变, 5、判断该result的最后一个字符,是否与前面的字符串重复, 6、如果不重复,判断max是否小于当前的result,如果小于,进行重新赋值max长度为len(result) 7、如果重复,指针指向下一个字符 ,result等于该字符,进行重新寻找连续的不重复字符串 代码实现 package main import ( "fmt" "strings" ) func Same(s string

    1.2K30

    扫码关注腾讯云开发者

    领取腾讯云代金券