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

本文介绍了一种求解字符串中最长无重复字符子串长度的高效算法。通过滑动窗口与哈希表结合的方法,实现O(n)的时间复杂度。适用于编程面试和技术挑战。
971

被折叠的 条评论
为什么被折叠?



