python--剑指offer--中等--48. 最长不含重复字符的子字符串

python--剑指offer--中等--48. 最长不含重复字符的子字符串_第1张图片
python--剑指offer--中等--48. 最长不含重复字符的子字符串_第2张图片
python--剑指offer--中等--48. 最长不含重复字符的子字符串_第3张图片
python--剑指offer--中等--48. 最长不含重复字符的子字符串_第4张图片
代码

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        dic = {
     }
        res = tmp = 0
        for j in range(len(s)):
            i = dic.get(s[j], -1)
            dic[s[j]] = j
            tmp = tmp + 1 if tmp < j - i else j - i
            res = max(res, tmp)
        return res


if __name__ == '__main__':
    solution = Solution()
    s = "abcabcbb"
    result = solution.lengthOfLongestSubstring(s)
    print(result)

python--剑指offer--中等--48. 最长不含重复字符的子字符串_第5张图片

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        dic, res, i = {
     }, 0, -1
        for j in range(len(s)):
            if s[j] in dic:
                i = max(dic[s[j]], i) # 更新左指针 i
            dic[s[j]] = j # 哈希表记录
            res = max(res, j - i) # 更新结果
        return res

你可能感兴趣的:(python,#,剑指offer--python,python,剑指offer,最长不含重复字符的子字符串)