December 14, 2021

Longest Substring Without Repeating Characters

 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.