3. Longest Substring Without Repeating Characters

3Longest Substring Without Repeating Characters

题目描述

Given a string, find the length of the longest substring without repeating characters.

Examples:

Given "abcabcbb", the answer is "abc", which the length is 3.

Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", the answer is "wke", with the length of 3. Note that the answer must be a substring"pwke" is a subsequenceand not a substring.

分析

只需要返回最大长度值,所以只需要一个int型变量保存返回结果;

定义两个指针,记录当前找到的无重复子串的起始和终止位置(终止即当前遍历到的索引位置)。

完整代码

class Solution(object):
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        maxlen=start=0
        used={}        #保存已遍历的字符和最近出现的位置
        for i,c in enumerate(s):
            if c in used and start<=used[c]:    #若当前字符之前出现过,并且在start之后
                start=used[c]+1     #更新起点
            else:   
                maxlen=max(maxlen,i-start+1)    #更新最大长度
            used[c]=i   #更新字符出现的位置
        return maxlen

阅读更多
个人分类: leetcode
上一篇2. Add Two Numbers
下一篇7. Reverse Integer
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭