【leetcodeブラシ問題】3.重複文字のない長男列(スライドウィンドウ法)シリーズまとめ


3.重複文字のない長男列(Medium)
文字列を指定すると、重複文字が含まれていない長男の列の長さを見つけてください.
class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        #    :    
        #      s  ,  0; 1,  1。
        if s == "": return 0
        if len(s) == 1: return 1
        left = 0
        lookup = set()
        max_len, cur_len =0, 0
        for i in range(len(s)):
            cur_len += 1
            while s[i] in lookup:
                lookup.remove(s[left])
                left += 1
                cur_len -= 1
            max_len = max(max_len, cur_len)
            lookup.add(s[i])
        return max_len

        #    :    +  (   )
        # length, j = 0, -1
        # for i,x in enumerate(s):
        #     if x in s[j+1:i]:
        #         length = max(length, i-j-1)
        #         j = s[j+1:i].index(x)+j+1
        # return max(length, len(s)-1-j)

        #    :    
        # if s == "": return 0
        # if len(s) == 1: return 1

        # def find_left(s, i):
        #     tmp_str = s[i]
        #     j = i - 1
        #     while j >= 0 and s[j] not in tmp_str:
        #         tmp_str += s[j]
        #         j -= 1
        #     return len(tmp_str)
        # length = 0
        # for i in range(0, len(s)):
        #     length = max(length, find_left(s, i))
        # return length

 
参照リンク:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/hua-dong-chuang-kou-by-powcai/