# #利用滑动窗口去解决无重复字符的最长字串
def lengthOfLongestSubstring(s) :
if not s:
return 0
left = 0
lookup = set()
n = len(s)
max_len = 0
cur_len = 0
for i in range(n):
cur_len += 1
while s[i] in lookup:
lookup.remove(s[left])
left += 1
cur_len -= 1
if cur_len > max_len: max_len = cur_len
lookup.add(s[i])
#print (max_len)
return max_len
# s="xyzxyz"
# lengthOfLongestSubstring(s)
#从最长字符串到最短依次遍历
def lengthOfLongestSubstring(s) :
x=set(list(s))#将字符串转化为不重复的单个字符,现在x是一个列表
s_length=len(s)#字符串s的长度
if s_length==0:
return 0
x_length=len(x)#列表x的长度
y=range(-x_length,0)
absList=list(map(abs,y))##取绝对值并将数字从大到小排列,得到不重复子串的长度情况
for i in absList:#测试无重复最长子串的长度
for j in range(0,s_length-i+1):
#list(s[j:j+i])得到所有的子串。
if len(set(list(s[j:j+i])))==i:#判断子串中不重复元素是否最长
print(i)
return i
s="xyzxyz"
lengthOfLongestSubstring(s)