Problem Description:
Given a string, find the length of the longest substring without repeating characters.
Example 1:
Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc"
, with the length of 3.
Example 2:
Input: "bbbbb"
Output: 1
Explanation: The answer is "b"
, with the length of 1.
Example 3:
Input: "pwwkew" Output: 3 Explanation: The answer is"wke"
, with the length of 3. Note that the answer must be a substring,"pwke"
is a subsequence and not a substring.
My Solution: cost O(n)
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
# 类似队列思想
# maxN记录最大数 tempN记录临时数值和maxN比较
maxN = tempN = 0
# 保存s来的数据 一个 一个的保存比较 类似队列
l1 = []
for i in range(len(s)):
# 遍历整个字符串 一遍
if s[i] not in l1:
# 如果当前字符不在当前队列中 就添加到队列中 并记录队长 更新当前最大值
l1.append(s[i])
tempN = l1.__len__()
maxN = tempN if tempN > maxN else maxN
else:
# 否则 就出队列 直到出到 该字符出现在队列的位置的下一字符 然后再将该字符入队列
# 或者 出到该字符在队列出现的位置 下面实现第一种方法
l1 = l1[l1.index(s[i])+1:]
l1.append(s[i])
return maxN