1. 程式人生 > >python實現找出來一個字串中最長不重複子串

python實現找出來一個字串中最長不重複子串

剛結束的一個筆試題,很簡單,不多說簡單貼一下具體的實現:

#!usr/bin/env python
#encoding:utf-8

'''
__Author__:沂水寒城
功能:找出來一個字串中最長不重複子串
'''


def find_longest_no_repeat_substr(one_str):
    '''
    找出來一個字串中最長不重複子串
    '''
    res_list=[]
    length=len(one_str)
    for i in range(length):
        tmp=one_str[i]
        for j in range(i+1, length):
            if one_str[j] not in tmp:
                tmp+=one_str[j]
            else:
                break
        res_list.append(tmp)
    res_list.sort(lambda x,y:cmp(len(x),len(y)))
    return res_list[-1]


if __name__ == '__main__':
    one_str_list=['120135435','abdfkjkgdok','123456780423349']
    for one_str in one_str_list:
        res=find_longest_no_repeat_substr(one_str)
        print '{0}最長非重複子串為:{1}'.format(one_str, res)


結果如下:

120135435最長非重複子串為:201354
abdfkjkgdok最長非重複子串為:abdfkj
123456780423349最長非重複子串為:123456780