一、题目描述
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
示例1:
输入: "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。二、思路 & 代码实现
1. 思路
使用两个for循环,外层循环控制起始位置,内层循环从起始元素开始,将未重复元素添加到一个临时数组,遇到重复元素就退出循环。将临时数组的长度也就是子串的长度添加到一个数组。最后比较数组内所有元素的最大值便是最长子串的长度。
2. 代码实现
class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        # 默认子串长度为0
        # 1 使用常数统计最长子串长度
        # result = 0
        # 2 使用数组统计所有子串长度
        result = [0]
        length = len(s)
        for i in range(length):
            cur = []
            for j in range(i, length):
                if s[j] not in cur:
                    cur.append(s[j])
                else:
                    break
            #if len(cur) > result:
            #    result = len(cur)
            if len(cur) > 0:
                result.append(len(cur))
        #return result
        return max(result)3. 表现
| 记录方式 | 运行时间 | 表现 | 内存消耗 | 表现 | 
|---|---|---|---|---|
| 1 | 2168ms | 4% | 13.4MB | 32% | 
| 2 | 2164ms | 5.01% | 13.3MB | 84.95% | 
 
                        
                        