Leetcode刷题之无重复字符的最长子串

1、题目

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

  示例:

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke"是一个子序列,不是子串。 

2、思路

         采用滑动窗口的形式,用一个指针控制窗口的起始位置,另一个指针控制窗口的终止位置,子串的要求是当超出条件限制的时候更新最大的子串长度,然后将起始位置再向后移动一位,继续循环。

3、解题

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        n = len(s)
        if len(s) < 1:
            return 0
        max_length = 1
        for i in range(n):
            head_ele = s[i]
            tmp_list = [head_ele]
            for ele in s[i+1:]:
                if ele not in tmp_list:
                    tmp_list.append(ele)
                    max_length = max(len(tmp_list), max_length)
                else:
                    break
        return max_length

4、结果

Accepted
987/987 cases passed (2352 ms)
Your runtime beats 5 % of python3 submissions
Your memory usage beats 71.21 % of python3 submissions (14.9 MB)

 

你可能感兴趣的:(Leetcode,leetcode,python)