这个题挺简单的,应该是要属于easy的等级。可能我的算法不够好吧
首先定义一个起始指针start,然后用另一个指针p从头到尾扫描,将没遇到的字符加进hash表中,存放位置,如果遇到重复的字符,就修改start的起始位置,从重复的数值开始计算,这样得到最大的字串长度。
class Solution:
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
le = len(s)
if len(s) == 0: return 0
dic = {}
maxlen = 0
start = 0
for i in range(le):
if s[i] in dic.keys() and dic[s[i]] >= start:
start = dic[s[i]] + 1
maxlen = maxlen if i - start < maxlen else i - start
dic[s[i]] = i
return maxlen + 1