Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1.
Subscribe to see which companies asked this question
class Solution(object):
def lengthOfLongestSubstring(self, s):
maxx = 0
table = [False] * 256
i = 0
j = 0
while j < (len(s)):
if table[ord(s[j])]:
while s[i] != s[j]:
table[ord(s[i])] = False
#新候选字串从第一个重复字符(当s[i] == s[j]时候的i)的后一位开始算,之前的i不算,等效于没有被扫描到,所以设为false.
i += 1
i += 1
j += 1
else:
table[ord(s[j])] = True
j += 1
maxx = max(maxx,j-i)
return maxx
''' 用哈希表做的,很慢,因为n平方的复杂度
res = ''
maxx = 0
for i in xrange(len(s)):
table = [0] * 256
count = 0
for j in xrange(i,len(s)):
pos = ord(s[j])
if table[pos] == 1:
break
table[pos] = 1
count += 1
maxx = max(maxx,count)
return maxx
'''
'''
for i in xrange(0,len(s)):
count = 0
if len(s) - i < maxx:
break
ss = s[i:]
#print ss
res = ''
table = [0] * 500
for j in ss:
pos = ord(j)
if table[pos] == 1:
break
table[pos] = 1
#res = res + j
#print res
count += 1
if count > maxx:
maxx = count
return maxx
'''

本文介绍了一种求解字符串中最长无重复字符子串长度的算法实现,通过使用哈希表来跟踪字符出现的位置,有效地解决了该问题,并提供了Python代码示例。
337

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



