20200329-劍指offer-面試題48. 最長不含重複字符的子字符串(滑動窗口)

傳送門
借鑑的評論區的思路,滑動窗口
在這裏插入圖片描述

class Solution(object):
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        maxx = 1
        if len(s) == 0:
            return 0
        # 雙指針
        lcur = 0
        rcur = 1
        size = 1
        while size >= 1:
            if rcur < len(s):
                if s.find(s[rcur], lcur, rcur) == -1:
                    size = rcur - lcur + 1
                    maxx = max(size, maxx)
                else:
                    for i in range(rcur - 1, lcur - 1, -1):
                        if s[i] == s[rcur]:
                            lcur = i + 1
                            size = rcur - lcur + 1
                            break
                rcur = rcur + 1
            else:
                rcur = min(rcur, len(s)-1)
                maxx = max(maxx, rcur - lcur + 1)
                break
        return maxx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章