Problem Statement: Given a string
s
, find the length of the longest substring without repeating characters.Example 1:
Input: s = "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.
Example 2:
Input: s = "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.
Example 3:
Input: s = "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3.
Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.
Constraints:
0 <= s.length <= 5 * 104
s
consists of English letters, digits, symbols and spaces.
Leetcode Difficulty: Medium
Asked in: Facebook Amazon ,Apple Netflix Google
Code:
def lengthOflongestsubstring(self, s):
"""
s: str
return: int
"""
if len(s)<2: return len(s)
result=0
start=end=0
occur = {}
while end<len(s):
if s[end] in occur:
start = max(occur[s[end]]+1,end)
result=max(result,end-start+1)
occur[s[end]]=end
end+=1
return result
Thought Process / Explanation:
The "longest substring in a string" sounds like the use of a sliding window. "Without repeating characters" hints to making use of a dictionary for doing some kind of check if a char has already occurred before or not or at what idx did it occur before for me to decide and moving my window start head accordingly. Keep count of maximum length achieved while sliding the pointers.
Thank You!
No comments:
Post a Comment
Please share your valuable feedback. It will help me and community grow.