您的位置:首页 > 其它

[Leetcode] 3. Longest Substring Without Repeating Characters

2017-07-17 22:19 357 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息