题目简单描述:
输入: "abcabcbb" 输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
输入: "pwwkew" 输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
思路:采用滑动窗口的方法,此方法具体可以在leetcode中查找本题他人的思路或者百度可以进行了解。
以下代码:1.获取用滑动窗口方法获取所有可能的结果;2.在所有可能结果中找到最长的子串
import copy
def set_num(w): #定义用滑动窗口方法获得的无重复列表
A=[]
for j in range(0,len(w)): #先定住左窗口
a=[]
for i in range(j,len(w)): #右窗口
if w[i] not in a:
a.append(w[i])
B=copy.deepcopy(a) #生成与a相同的列表
A.append(B)
else:
break
print(A)
return A
def LongestSubstring(A):
a=[]
for i in range(0,len(A)):
a.append(len(A[i])) #获取列表中列表的长度
max_index=a.index(max(a)) #获取列表中数字最大值的下标
print(A[max_index])
A=set_num("pwwkew")
LongestSubstring(A)
A=set_num("abcabcbb")
LongestSubstring(A)