leetcode3-Longest Substring Without Repeating Characters

class Solution:
    def lengthOfLongestSubstring(self, s):
        if s is None and len(s) == 0:
            return 0

        letter_last_pos = dict()
        origin_list = list(s)
        letter_list = []
        i, j = 0, 0
        len_max = 0
        cur = 0
        while i <= j and j < len(s):
            if s[j] not in letter_list:
                # letter last pos update 
                letter_last_pos[s[j]] = j
                # update letter_list without repeat letters
                letter_list = origin_list[i:j+1]
                cur = len(letter_list)
               
            else:
                # move i to proper pos to make sure there is no repeat letter 
                # between [i, j]
                i = letter_last_pos[s[j]] + 1
                del letter_list[:]
                # update letter_list without repeat letters
                letter_list = origin_list[i:j+1]
                # letter last pos update 
                letter_last_pos[s[j]] = j
                cur = len(letter_list)
               
            len_max = max(cur, len_max)
            j += 1
        return len_max

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值