Python 解leetcode:3. Longest Substring Without Repeating Characters
Posted 潇湘旧友
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 解leetcode:3. Longest Substring Without Repeating Characters相关的知识,希望对你有一定的参考价值。
题目描述:求一个字符串的不含重复字符的最长连续子串的长度;
- 思路:
- 使用一个哈希表保存字符出现的位置;
- 使用left和right分别表示子串的最左和最右字符的下标;
- 遍历字符串,如果当前字符在哈希表中并且当前字符在哈希中的位置大于left,表明left和right之间存在和right索引上相同的字符,此时把left置为当前值在哈希表中的值;
- 把当前索引值+1,表示是第几个字符,求出当前最大长度;
- 3-4步重复,直到获得遍历完成;
感觉这是个动态规划题,暂时没用动态规划分析,后续再说。
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
hashes = {}
left, right, length = 0, 0, len(s)
max_len = 0
while right < length:
if hashes.get(s[right]) and hashes[s[right]] >= left:
left = hashes[s[right]]
hashes[s[right]] = right + 1
max_len = max(max_len, right - left + 1)
right += 1
return max_len
以上是关于Python 解leetcode:3. Longest Substring Without Repeating Characters的主要内容,如果未能解决你的问题,请参考以下文章
Python 解LeetCode:394 Decode String
Python 解LeetCode:Intersection of Two Arrays
Python3解leetcode Factorial Trailing Zeroes
Python3解leetcode Same TreeBinary Tree Level Order Traversal II