LeetCode题解:3.无重复字符的最长子串【Python 题解超详细,滑动窗口法、暴力解法】,知识拓展:哈希函数与哈希表

题目描述

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

代码

class Solution(object):
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """

        # 思路一:滑动窗口
        # 初始化最大长度记录
        max_length = 0
        # 初始化起始位置
        start_index = 0
        # 用于存储当前窗口内的字符
        char_set = set()

        # 遍历字符串,end_index作为窗口的右边界
        for end_index in range(len(s)):
            # 如果字符重复,缩小窗口的左边界,直到没有重复字符
            while s[end_index] in char_set:
                char_set.remove(s[start_index])  # 移除最左边的字符
                start_index += 1  # 移动左边界
            
            # 将当前字符加入集合
            char_set.add(s[end_index])
            # 更新最大长度
            max_length = max(max_length, len(char_set))

        return max_length

        # # 思路二:暴力解法
        # # 初始化最大长度记录
        # max_length = 0
        # # 遍历字符串的每一个起始位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值