lc#3求字符串中不包含重复字符的最大长度子串
来源:互联网 发布:擎洲广达计价软件 编辑:程序博客网 时间:2024/05/18 03:29
问题描述
给定一个字符串,求出该字符串中不包含重复字符的最大长度子串的长度。
测试用例:
“abcabcbb” -> 最大子串”abc”,长度是3
“bbbbb” -> 最大子串”b”,长度是1
“pwwkew” -> 最大子串”wke”,长度是3
解答
遍历字符串,我们假设有个窗口,这个窗口在从字符串左侧开始由左向右移动,窗口中包含的是字符串中没有重复字符的子串。
我们以字符串abcdfcab
为例,窗口先包含a
,遍历到b
,窗口中不包含b
,则将b
添加到窗口中,以此类推一直到f
,再到c
,
因为窗口中已经有c
,记录当前max_len = max(len,max_len)
,max_len
初始值为0,此时,窗口去掉之前从a
到第一个c
的部分,
并把第二个c加进来,保证窗口中字符的唯一性,以此类推直到结束字符串遍历,返回max_len
即为最优解。
如下图,max_len = 5
class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ list = [] # 窗口 max_size = 0 i = 0 while i < len(s): #遍历字符串 if s[i] not in list: list.append(s[i]) #如果不在窗口中,则放入窗口 else: max_size = max(max_size, len(list)) #保存当前最大的len list = list[list.index(s[i]) + 1:] #截取窗口从重复字符之前的部分,包括重复的字符本身 list.append(s[i]) #将新的字符放进窗口 i += 1 max_size = max(max_size, len(list)) return max_size
阅读全文
0 0
- lc#3求字符串中不包含重复字符的最大长度子串
- 求字符串中不包含重复字符的最长子串的长度
- 从字符串S中找出不包含重复字符的最大连续子字符串长度
- 求字符串中不重复字符的最长子串
- 求一个字符串的最长不重复子串的最大长度
- 求字符串的不重复字符的最长子串长度的问题
- 求字符串的不重复字符的最长子串长度的问题
- 求字符串内不包含重复字符的最长子串的集合
- 求字符串内不包含重复字符的最长子串
- 字符串最长不含重复字符的子串长度
- 求字符串中不重复的最长子串的长度
- 字符串中不重复连续字符子串的长度最大值
- 【leetcode】第3题:求最长不重复(字符不重复)的子串的长度
- 查找字符串中字符不重复的最大子串(C/C++)
- 求一个字符串中字符不重复的连续的子串
- java中求一个字符创的最大不重复长度
- 有关求最大不含重复字符子字符串算法的C#实现
- 求字符串中包含唯一字符的最长子串
- 事件监听
- MySQL中创建数据库时的一些属性
- (二)java框架篇笔记库(27)
- 技术共享之AS代码混淆
- Mycat 安装和配置
- lc#3求字符串中不包含重复字符的最大长度子串
- vue动态路由配置
- Java上传图片至七牛云
- 虚拟机下Centos7如何设置静态IP地址
- (docker)入门实践、环境部署、基本操作指令、镜像库、数据卷
- poi、Excel工具包,支持map转excel,bean转excel
- extundelete恢复Ubuntu系统下git clean -fd(rm)误删除的文件
- Vim小技巧
- CentOS7中systemctl的使用