- Longest Substring Without Repeating Characters
Medium
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.
Example 4:
Input: s = “”
Output: 0
Constraints:
0 <= s.length <= 5 * 104
s consists of English letters, digits, symbols and spaces.
Accepted
This is a like a sliding window to find the longest substr, if we put the letters in an array, then check the next letter, if it is in the array, then sliding the window, otherwise, put the value in the array set.
code:
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
# Input: s = "", Output: 0, T=O(n)
if s == "":
return 0
# store all possible characters
total_str_list = []
# store each letter of substr
temp_str_list = []
temp_str_list.append(s[0])
for i in range(1, len(s)):
if s[i] in temp_str_list: # if in side the set, move sliding window
total_str_list.append(temp_str_list)
temp_str_list = temp_str_list[temp_str_list.index(s[i]) + 1: ]
temp_str_list.append(s[i])
else: # if not, move in to set
temp_str_list.append(s[i])
total_str_list.append(temp_str_list) # put the last value
return max([len(item) for item in total_str_list]) # check maximum