image.png
看到這個(gè)題目我第一反應(yīng)是好簡(jiǎn)單QAQ,五分鐘搞出织狐。然后這是我的代碼:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: ShidongDu time2019/8/22
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
l = []
res = []
for x in s:
if x not in l:
l.append(x)
else:
res.append(len(l))
i = l.index(x)
l = l[i+1:]
l.append(x)
res.append(len(l))
return max(res) if res else 0
if __name__ == '__main__':
solution = Solution()
str = "pwwkew"
max_length = solution.lengthOfLongestSubstring(str)
print(max_length)
但是在提交測(cè)試的時(shí)候在第407個(gè)測(cè)試用例出現(xiàn)了錯(cuò)誤:
image.png
如下暂幼,我反應(yīng)了十分鐘才明白到底哪出問(wèn)題了,我還一度認(rèn)為測(cè)試用例的結(jié)果是官方人員寫(xiě)錯(cuò)了移迫。旺嬉。。真是頭豬:內(nèi)心OS:dvdf厨埋,沒(méi)錯(cuò)坝シ!揽咕!最長(zhǎng)就是2啊悲酷,后來(lái)我反應(yīng)過(guò)來(lái)還有子串vdf。亲善。设易。
這樣看來(lái)是我根本邏輯錯(cuò)了,我在遍歷子串的時(shí)候蛹头,在遇到重復(fù)字段時(shí)候下意識(shí)地將當(dāng)前索引直接跳轉(zhuǎn)到重復(fù)位置顿肺,也就是在遇到形容dvdf時(shí)候,第二個(gè)d我直接跳到d上渣蜗,沒(méi)考慮從v開(kāi)始屠尊。。耕拷。
下面是網(wǎng)上大神寫(xiě)的讼昆,簡(jiǎn)潔高效(哭泣
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
l = []
res = []
for x in s:
if x not in l:
l.append(x)
else:
res.append(len(l))
i = l.index(x)
l = l[i+1:]
l.append(x)
res.append(len(l))
return max(res) if res else 0
巧用切片,保存了最大不重復(fù)子串骚烧。