(三)无重复字符的最长子串(Python3)
给定一个字符串,请你找出其中不含有重复字符的最长子串
的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
res: 整型,用于返回,存储当前最长的子串长度。
start: 整型,用于保存当前子串的开始下标(index)
cache:字典,用于保存每个字母的最近下标(index)
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
start, res, cache = 0, 0, {}
for idx, c in enumerate(s):
if c in cache and cache[c] >= start:
start = cache[c] + 1
cache[c] = idx
else:
cache[c] = idx
cur = idx - start + 1
res = max(res, cur)
return res
if __name__ == '__main__':
s = Solution()
print(s.lengthOfLongestSubstring("aabaab!bb"))
|| 版权声明
作者:废权
链接:https://blog.yjscloud.com/archives/123
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。
作者:废权
链接:https://blog.yjscloud.com/archives/123
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。
THE END
0
二维码

(三)无重复字符的最长子串(Python3)
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc&q……

文章目录
关闭
共有 0 条评论