最长子序列

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

最长子序列我也是使用两种方法做的,第一种使用暴力法遍历字符串中所有子序列直接超时,这里就不贴出来了。第二种网上看有一些什么滑动窗口什么的方法,表示看不太懂,然后我找到了一篇自己能理解的,时间复杂度为O(n)

class Solution:
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        temp = res = ""
        for item in s:
            if item not in temp:
            #该字母不在temp子序列中
                temp += item
                if len(temp) > len(res):
                    res = temp
            else:
            #在子序列中
                index = temp.index(item)#重复字母在子序列中的下标
                if index == len(temp) - 1:
                #重复字母是最后一个
                    temp = item
                else:
                #重复字母在子序列中
                    temp = temp[index + 1 :] + item #新的子序列
        return len(res)
                

参考博客

你可能感兴趣的:(最长子序列)