编程思路:及时更新list里面的内容,当出现重复值时,list将删除从开始到list中重复值处,此外也需注意处理到字符串结尾处。
class Solution:
# @return an integer
def lengthOfLongestSubstring(self, s):
li = []
len_max = 0
for i in range(len(s)):
if not s[i:i+1] in li:
li.append(s[i:i+1])
# 如果到字符串结尾:
if i == len(s)-1:
len_cur = len(li)
len_max = len_cur if len_cur > len_max else len_max
else:
len_cur = len(li)
len_max = len_cur if len_cur > len_max else len_max
# 更新li里面的值,出现重复值之前(包含重复值)的全部去除
# 得到出现重复值的索引
index = li.index(s[i:i+1])
# 注意,每次去除li里面第一个元素,因为去除第一个元素后,更新后的li的一个元素是之前li的第二个元素
for j in range(index+1):
li.remove(li[0])
li.append(s[i:i+1])
return len_max
本文介绍了一种求解最长无重复字符子串长度的方法,通过动态更新列表来跟踪当前子串的状态,并在遇到重复字符时调整子串范围。
728

被折叠的 条评论
为什么被折叠?



