题目描述
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.
- 给你一个串,求没有重复字符的最长子串的长度。
- 样例:
给定串“abcabcbb”,答案是‘abc’,长度是3。
给定串 “bbbbb”,答案是‘b’,长度是1。
给定串 “pwwkew”,答案是‘wke’,长度是3,注意必须是子串,‘pwke’是子序列而不是子串。
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
maxn, index, dict,start,lenS = 0, 0, {},0,len(s)
for i in range(0, lenS):
if s[i] in dict and dict[s[i]] >= start:
start = dict[s[i]] + 1
index = i - dict[s[i]]
else:
index += 1
if index > maxn:
maxn = index
dict[s[i]] = i
return maxn
maxn:最大长度
index:遍历到当前的最大长度
dict:某个字母存在的前一个位置。
start:当前位置最大长度的开始计数位置。