3. Longest Substring Without Repeating Characters【M】【28】【leetcode】

来源:互联网 发布:teamview linux无桌面 编辑:程序博客网 时间:2024/05/22 13:25

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


0 0
原创粉丝点击