python經典算法題:無重複字符的最長子串

題目:無重複字符的最長子串。html

給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。python

示例 1:code

輸入: 「abcabcbb」
輸出: 3
解釋: 由於無重複字符的最長子串是 「abc」,因此其長度爲 3。
示例 2:htm

輸入: 「bbbbb」
輸出: 1
解釋: 由於無重複字符的最長子串是 「b」,因此其長度爲 1。
示例 3:blog

輸入: 「pwwkew」
輸出: 3
解釋: 由於無重複字符的最長子串是 「wke」,因此其長度爲 3。ci

請注意,你的答案必須是 子串 的長度,「pwke」 是一個子序列,不是子串。字符串

解法1:常規思路get

class Count:
    def __init__(self):
        self.curLength = 0

    def compare(self, temp: str):
        lens = len(set(temp))
        if lens != len(temp):
            return False
        else:
            self.curLength = lens
            return True

    def circulation(self, s: str):
        flag = False
        length_s = len(s)  # 8
        temp = ""
        j = 0
        while j + self.curLength < length_s:  # 1+0<8
            temp = s[j:j + self.curLength + 1]  # temp = "a"
            if self.compare(temp):  # tem不重複
                continue
            else:
                j += 1
        return self.curLength

解法2:神仙思路(網上看的)string

class Solution:
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        st = {}
        i, ans = 0, 0
        for j in range(len(s)):
            if s[j] in st:
                i = max(st[s[j]], i)
            ans = max(ans, j - i + 1)
            st[s[j]] = j + 1
        return ans

轉自:http://www.javashuo.com/article/p-drjaahhn-p.htmlit

相關文章
相關標籤/搜索