How to find the longest substring with all unique characters in Python

2 Answers

0 votes
def longest_unique_substring(s: str) -> str:
    seen = {}
    start = 0
    max_len = 0
    max_sub = ""

    for i, ch in enumerate(s):
        # If character already seen and inside current window, move start
        if ch in seen and seen[ch] >= start:
            start = seen[ch] + 1

        seen[ch] = i  # Update last seen index

        # Check if we found a longer substring
        if i - start + 1 > max_len:
            max_len = i - start + 1
            max_sub = s[start:i+1]

    return max_sub


print(longest_unique_substring("abcabcdabcbcc"))  
print(longest_unique_substring("pwwkew"))    
print(longest_unique_substring("bbbbb"))     



'''
run:

abcd
wke
b

'''

 



answered Mar 7 by avibootz
0 votes
def longest_unique_substring(s: str) -> str:
    seen = {}
    start = 0
    best = (0, 0)
    
    for i, ch in enumerate(s):
        if ch in seen and seen[ch] >= start:
            start = seen[ch] + 1
        seen[ch] = i
        if i - start + 1 > best[1] - best[0]:
            best = (start, i + 1)
    
    return s[best[0]:best[1]]


print(longest_unique_substring("abcabcdabcbcc"))  
print(longest_unique_substring("pwwkew"))    
print(longest_unique_substring("bbbbb"))     



'''
run:

abcd
wke
b

'''

 



answered Mar 7 by avibootz
...