对于Python的基本语法有了了解,而且在之前学过C++过后,自己的编码能力也有了提升,算法能力也有了提升。现在用Python将这道题再写一遍。
算法用到了滑动窗口,数据结构使用了哈希表。
代码不长,细节修改了许多。
# This is ivyyi's py_file!
# 2023/7/25 13:35
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
l = len(s) #获取字符串长度
lookup = set() #运用数据结构哈希表
left , right = 0,-1 #设定左右指针
maxlen = 0
for i in range(l):
if i != 0:#左指针每移动一次
lookup.remove(s[i-1])
left = i
while right +1<l and s[right+1] not in lookup:#在左指针确定的情况下,右指针移动
lookup.add(s[right +1])
right+=1
maxlen = max(maxlen,right - left +1) #maxlen取maxlen和当前左右指针差的最大值
return maxlen