3. Longest Substring Without Repeating Characters {Medium}

Given a string, find the length of the longest substring without repeating characters.

Example 1:

Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.
Example 2:

Input: "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.
Example 3:

Input: "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3.
Note that the answer must be a substring, "pwke" is a subsequence and not a substring.

解题思路提示,两个指针
My silly solution:

class Solution:
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        if len(s) <= 1: return len(s)
        i = 0
        j = 1
        target = ''
        sub = s[i:j]
        while i < len(s) and j < len(s):
            if s[j] not in sub:
                sub = s[i:j+1]
                if len(target) < len(sub):
                    target = sub
                j = j + 1
                continue
            else:
                sub = s[i+1:j]
                i = i + 1
                continue
        return len(target)

leo39032506 better solution:

class Solution:
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        ans = 0
        sub = ''
        for char in s:
            if char not in sub:
                sub += char
                ans = max(ans, len(sub))
            else:
                cut = sub.index(char)
                sub = sub[cut+1:] + char
        return ans

你可能感兴趣的:(3. Longest Substring Without Repeating Characters {Medium})