Given a string s
, find the length of the longest substring without repeating characters.
To solve this problem, we can use the sliding window technique along with a dictionary to keep track of the most recent index of each character.
last_position
(dictionary): Stores the last seen index of each character.max_length
(integer): Tracks the length of the longest substring without repeating characters. Initialize it to 0
.prev
(integer): Marks the starting index of the current substring window. Initialize it to 0
.Use a for loop to iterate over the string with an index i
and the current character s[i]
.
Check for Repeating Characters:
s[i]
is found in last_position
and last_position[s[i]] >= prev
:
prev
to last_position[s[i]] + 1
to move the starting index of the window after the last occurrence of the character.Update the Window and Variables:
last_position[s[i]]
to the current index i
.i - prev + 1
.max_length
if the current substring length is greater.After the loop, max_length
contains the length of the longest substring without repeating characters.
Input:
s = "abcabcbb"
Output:
3
Explanation:
The longest substring without repeating characters is "abc"
, with a length of 3
.
Input:
s = "bbbbb"
Output:
1
Explanation:
The longest substring without repeating characters is "b"
, with a length of 1
.
Input:
s = "pwwkew"
Output:
3
Explanation:
The longest substring without repeating characters is "wke"
, with a length of 3
.
Input:
s = "abcde"
Output:
5
Explanation:
All characters are unique, so the longest substring is the entire string.
Input:
s = ""
Output:
0
Explanation:
The string is empty, so the longest substring length is 0
.
Input:
s = "abba"
Output:
2
Explanation:
The longest substrings without repeating characters are "ab"
or "ba"
, both with a length of 2
.
0 <= s.length <= 10^5
s
consists of English letters, digits, symbols, and spaces.https://leetcode.com/problems/longest-substring-without-repeating-characters/description/
Loading component...
Loading component...