[Leetcode] 3. Longest Substring Without Repeating Characters

来源:互联网 发布:vc源码 文件管理器 编辑:程序博客网 时间:2024/06/05 16:40

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 subsequence and not a substring.


提交了无数次,最后终于过了,唉。。。。

用一个字典记录字符出现的位置。 用滑动窗口的思想,[i,j]区间保证是无重复子串,j往后加。如果s[j]已经在字典中记录过,位置为j',则i往后滑至j‘+1处,依然j往后滑直至等于字符串长度n。

class Solution(object):    def lengthOfLongestSubstring(self, s):        """        :type s: str        :rtype: int        """        n = len(s)         d = dict()        i,j = 0,0        ans = 0                while i<n and j<n:            if d.has_key(s[j]):                i = max(d[s[j]]+1,i)            ans = max(ans, j-i+1)            d[s[j]] = j             j += 1                        return ans



阅读全文
0 0