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.
我的思路就是從頭依次向后看,使用窗口的思想,在字符串類的題目中經常用到。如果發現一樣的字母,就移動窗口至兩個相似字母中的前一個的下一個位置。 在這個過程中,查找是否有一樣的字母時,可以采用hash表的方式,降低復雜度。
class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ max = 0 start = 0 set = {} for i in range(len(s)): set[s[i]] = -1 for i in range(len(s)): if set[s[i]] != -1: while start <= set[s[i]]: set[s[start]] = -1 start += 1 set[s[i]] = i if i - start + 1 > max: max = i - start + 1 return max新聞熱點
疑難解答