Python刷力扣——3.无重复字符的最长子串
2022/1/27 1:04:54
本文主要是介绍Python刷力扣——3.无重复字符的最长子串,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
来源:力扣(LeetCode)
链接:
https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
class Solution: def lengthOfLongestSubstring(self, s: str) -> int: a={} start=res=0 for i in range(len(s)): if s[i] in a: start=max(start,a[s[i]]) res=max(res,i-start+1) a[s[i]]=i+1 return res
思路:
在本题中求无重复字符、“子串”,联想到用一个字典“a”存储字符。以及用一个变量“start”标记一下要求的字符的起点,用一个变量“res”存储最长子串的长度。首先,遍历字符串“s”,然后,判断一下当前遍历的字符“s[i]”是否在“a”字典中。如果在,说明遇见重复字符,我们要将字符起点“start”变量重新赋值为当前位置。计算一下最长子串的长度“res”,取所有值中的最大值。最后将重复的字符的位置更新一下。
注意第一个无重复子串找到后,在后面的子串中会有多个字符与前面已找到子串重复!!!举个例子,“abba”。第一个满足要求的子串是“ab”,下一个字符“b”时“start”变成了“2”,如果不加“max(start,a[s[i]])”直接写成“start=a[s[i]]”,在下一个字符“a”时“start”就变成了“1”,导致错误。总之,要防止起点“start”回到上一个无重复子串中!!!
本文为学习算法的小白发布,不喜勿喷
这篇关于Python刷力扣——3.无重复字符的最长子串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Python基础编程
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南