Longest Substring Without Repeating Characters

업데이트:

Problem

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.

Solution

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        candidate_sol = []
        candi_set = set()
        max_len = 0
        for i in range(len(s)):
            new_s = s[i:]
            if max_len > len(new_s):
                break
            for c in new_s:
                if c not in candi_set:
                    candi_set.add(c)
                else:
                    candidate_sol.append(len(candi_set))
                    candi_set.clear()
                    break
            if len(candi_set) != 0:
                candidate_sol.append(len(candi_set))
            candi_set.clear()
            max_len = max(candidate_sol) if max(candidate_sol) > max_len else max_len
        return max_len

태그: , ,

카테고리:

업데이트:

댓글남기기