Python (窗口滑动)求无重复字符串的最长算法

描述:

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

整体思路:

利用窗口滑动,设定两个下标为i和j,把多有的字符存在字典中,如果出现已经重复的字典,则把i的位置移到重复元素位置,然后找出最长字符串

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        result_dict = {}
        i, ins = 0, 0
        for j in range(len(s)):
            if s[j] in result_dict:
                i = max(result_dict[s[j]], i)
            ins = max(ins, (j-i+1))
            # 当出现重复出现在result_dict字符时,把i的坐标移到j + 1,这种情况是在下一次的for循环中,所以是j+1
            result_dict[s[j]] = j + 1
        return ins
posted @ 2019-11-29 21:52  Fancey  阅读(205)  评论(0)    收藏  举报