[LeetCode] Longest Substring Without Repeating Characters Python

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jerry81333/article/details/79146385

题目:

Given a string, find the length of the longest substring without repeating characters.

Examples:

Given "abcabcbb", the answer is "abc", which the length is 3.

Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", 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.

简单来说,就是找不重复的最大字符串。

思路:

1. 最简单的莫过于从第一个字符开始找最大非重复字符串,找到最后个字符,简单粗暴,可以实现,但是会卡在时间复杂度上面。

2. 另一种就是使用队列的思路,start为队首,end为队尾,从串的开头开始,不重复则队列+1,重复则从start中慢慢pop出去,直到找到并pop出重复的字符。start-end为不重复的最大字符串值。

复杂度O(n) + O(n) = O(n)

代码:

class Solution(object):
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        i=0
        j=0
        max=0
        list=[]
        while True:
        	while j<len(s):
        		if s[j] in list:
        			break
        		list.append(s[j])
        		j+=1
        	if max<j-i:
        		max=j-i
        	if j>=len(s):
        		break
        	while i<j:
        		key = list.pop(0)
        		i+=1
        		if key == s[j]:
        			break
       	return max




猜你喜欢

转载自blog.csdn.net/jerry81333/article/details/79146385