题目描述
Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
# Leetcode
# 3. Longest Substring Without Repeating Characters
# https://leetcode.com/problems/longest-substring-without-repeating-characters/description/
# 无重复最长子串的长度
# 思路:通过set来保存无重复的字符,start记录子串开始位置,end记录结束位置;
# 遍历字符串,如果set中不存在当前字符,则加入,同时end+1,更新maxLength
# 如果存在,就移除set中,和当前字符相同的字符,在s位置之前的所有字符
# 如khabcabc,找到和第二个a相同的a,位于index=2,之前的依次是kha,移除set中的k\h\a.重新计数。
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
n = len(s)
myset = set()
start = end = maxLength = 0
while start < n and end < n:
if not myset.__contains__(s[end]):
myset.add(s[end])
end += 1
maxLength = max(maxLength, end - start)
else:
myset.remove(s[start])
start += 1
return maxLength