leetcode 3. 无重复字符的最长子串 python

题目描述:

题解:

 滑动窗口解法。

1.初始化left=0 longest=0。

2.right从1开始,当前窗口[left,right]对应的字符串段now为s[left:right],判断s[right]是否在now中存在,首先更新longest值,然后找到在now中对应的位置,left移动到该位置的下一个位置。

3.如果s[right]在now不存在,在其他情况不需要特殊处理,但如果此时right已经到s结尾的位置,需要更新longest值。(在longest和len(now)取最大值,加一是由于right只可以取到len(s)-1,并且now[left:right]无法取到right的位置)

class Solution(object):
    def lengthOfLongestSubstring(self,s):
        if len(s)<=1:
            return len(s)
        left = 0
        longest = 0
        for right in range(1,len(s)):
            now = s[left:right]
            if s[right] in now:
                longest = max(longest,len(now))
                left = left+now.index(s[right])+1
            else:
                if right == len(s)-1:
                    longest = max(longest,len(now)+1)
        return longest

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值