[LintCode 384] 最长无重复字符的子串(Python)
2017-09-04 17:02
531 查看
题目描述
给定一个字符串,请找出其中无重复字符的最长子字符串。样例
例如,在”abcabcbb”中,其无重复字符的最长子字符串是”abc”,其长度为 3。
对于,”bbbbb”,其无重复字符的最长子字符串为”b”,长度为1。
思路
遍历字符串中的每一个元素。借助一个辅助键值对来存储某个元素最后一次出现的下标。用一个整形变量存储当前无重复字符的子串开始的下标。代码
class Solution: """ @param: s: a string @return: an integer """ def lengthOfLongestSubstring(self, s): # write your code here res = 0 if s is None or len(s) == 0: return res d = {} tmp = 0 start = 0 for i in range(len(s)): if s[i] in d and d[s[i]] >= start: start = d[s[i]] + 1 tmp = i - start + 1 d[s[i]] = i res = max(res, tmp) return res
复杂度分析
时间复杂度O(n),空间复杂度O(n)。相关文章推荐
- lintcode-384-最长无重复字符的子串
- lintcode(384)最长无重复字符的子串
- [Lintcode] Longest Substring Without Repeating Characters 最长无重复字符的子串
- Leetcode 刷题(python)之 无重复字符的最长子串
- 中等_384_最长无重复字符的子串(6)
- (python3)最长无重复字符子串Longest Substring Without Repeating Characters
- lintcode,最长无重复字符的子串
- LintCode-最长无重复字符的子串
- lintcode: 最长无重复字符的子串
- LintCode 最长无重复字符的子串
- 最长无重复字符的子串 lintcode
- 最长无重复字符的子串-LintCode
- 滑动窗口 最长不重复子串问题,set保存滑动窗口,set保存子串和查重,l指向子串左端,r指向要添加的字符,如果重,一直删除到字符的后一位
- Longest Substring Without Repeating Characters (返回最长无字符重复的子串长度)
- 最长无重复字符子串
- 最长无重复字符的子串
- 求字符串中最长无重复字符的子串
- 求字符串中最长无重复字符的子串
- 最长无重复字符的子串
- 字符串中不重复字符的最长子串