题目
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
示例 1
输入: “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例 2
输入: “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例 3
输入: “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。
自己的代码。
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
max=0
for i, char1 in enumerate(s):
temp=s[i]
for j, char2 in enumerate(s[i+1:]):
if char2 in temp:
break
else:
temp+=char2
if len(temp)>max:
max=len(temp)
return max
然后在评论里发现了一遍循环搞定的代码,贴出来,然而现在还没看懂。
class Solution:
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
st = {}
i, ans = 0, 0
for j in range(len(s)):
if s[j] in st:
i = max(st[s[j]], i)
ans = max(ans, j - i + 1)
st[s[j]] = j + 1
return ans;