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