Skip to content

Instantly share code, notes, and snippets.

@syedsaqibali
Last active March 20, 2024 04:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save syedsaqibali/e288fa754fb025bbf3e565203a981d6f to your computer and use it in GitHub Desktop.
Save syedsaqibali/e288fa754fb025bbf3e565203a981d6f to your computer and use it in GitHub Desktop.
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
max_run_length = 0
start_run_index = -1
while start_run_index <= len(s) - max_run_length:
start_run_index += 1
run_letters = set([]) if start_run_index == 0 else set(list(s[start_run_index:start_run_index+max_run_length]))
if len(run_letters) < max_run_length:
continue
for k in s[start_run_index+max_run_length:]:
if k in run_letters:
break
run_letters.add(k)
max_run_length += 1
return max_run_length
@jkamashian
Copy link

    def lengthOfLongestSubstring(self, s: str) -> int:
        seenDict = {}
        maxCount = 0
        lastLegalIndex = 0

        for index, letter in enumerate(s):
            if letter in seenDict:
                lastLegalIndex = max(seenDict[letter]+1,lastLegalIndex)
            seenDict[letter] = index
            maxCount = max(maxCount, index - lastLegalIndex+1)
        return maxCount```

@syedsaqibali
Copy link
Author

@jkamashian yours is a lot more clever than mine!

@jkamashian
Copy link

jkamashian commented Mar 20, 2024

@syedsaqibali but you have no idea how long this took me 🤣

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment