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
'''