原文链接:https://www.cnblogs.com/NFii/p/11530379.HTML
思路类似于推箱子游戏,无重复字符的最长子串就是一个大的箱子,遍历字符串,每次取一个字符推进去,如果发现箱子里面已经有了重复的字符,就开始推旧字符出箱子,直到箱子无与新字符重复的字符.
图像解释以字符串"AAB"举列
被推出来的字符 | 最长无重复字符"箱子" | 待处理字符串 |
---|---|---|
无 | 取第一个字符A进箱子 | AB在外面 |
第一个字符的A被推出来了 | 取第二个字符A进箱子 | B在外面 |
第一个字符的A被推出来了 | 留在箱子里的A同时取B进箱子 | 无剩余字符 |
class Solution: def lengthOfLongestSubstring(self,s: str) -> int: # 最长无重复字符串的"箱子" st = ‘‘ # 最大长度 m = 0 for i in s: if i not in st: st += i else: # 将旧的推出箱子,同时存储前一次无重复的长度 m = max(m,len(st)) if len(st) != 1: st = st[st.find(i) + 1:] + i return max(m,len(st))
缺陷 运行速度太慢了,占内存过多,有待改进
总结以上是内存溢出为你收集整理的无重复字符的最长子串全部内容,希望文章能够帮你解决无重复字符的最长子串所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)