题目
对于一个字符串,请设计一个高效算法,找到字符串的最长无重复字符的子串长度。
给定一个字符串A及它的长度n,请返回它的最长无重复字符子串长度。保证A中字符全部为小写英文字符,且长度小于等于500。
测试样例:
“aabcb”,5
返回:3
思路
定义一个pre_index记录前一个重复字符的下标。
代码
class DistinctSubstring:
def longestSubstring(self, A, n):
# write code here
maxLen = 1
pre = -1
curr_dict = {}
for i, v in enumerate(A):
pre = pre if v not in curr_dict else max(pre, curr_dict[v])
maxLen = max(maxLen, i - pre)
curr_dict[v] = i
return maxLen