Longest Substring Without Repeating Characters
解决思路
把每个子序列列出来,然后去比较有没有相同的字符,最后输出,每个子序列列出来应该有单独的函数,比较相同字符的话要么就是循环,要么就是用函数。(之前的想法)
看了答案之后的解决方法:就是当没有重复的时候,无重复的子串长度一直增加,但是当有重复的时候,i-st+1就从1开始计算。
疑问
1、字符串的子序列怎么提取,
有专门的傻瓜方法,也可以直接用enumerate
2、循环或者函数
(还是一样的,先自己去百度查有没有相应的函数,再去看答案)
语法知识
1.把字符串进行子序列划分的函数s[i:i+x+1]
2.for i, ch in enumerate(s)
感悟
要把enumerate的循环好好看一遍!
代码
class Solution:
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
d, res, start = {}, 0, 0
for i, ch in enumerate(s):
if ch in d:
start = max(start, d[ch]+1)
res = max(res, i-start+1)
d[ch] = i
return res