leetcode: python 3. Longest Substring Without Repeating Characters

  1. 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
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页