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.
Subscribe to see which companies asked this question
主要考察字符串中的最大子串。
思路很简单:
1,由于需要判重并且记录索引,所以这里采用hashmap
2,一个字符串中无重的子串可能不止一个,要求得最大子串的长度,肯定需要max函数来不断更新最大值
3,从头开始,依次遍历字符串,并记录子串长度,同时更新子串最大值,若子串达到极限且字符串未到末尾,确定下一个子串的开始位置,并重新计算长度
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
start = 0
maxlen = 0
dic = {}
for i in range(len(s)):
if s[i] in dic and start<=dic[s[i]]:
start = dic[s[i]] + 1
else:
maxlen = max(maxlen, i-start+1)
dic[s[i]] = i
return maxlen
确定新子串的开始位置是本题的难点。