1. 程式人生 > >python字串面試題:找出一個字串中第一個字母和最後一個字元是第一次重複,中間沒有重複且最長的子串

python字串面試題:找出一個字串中第一個字母和最後一個字元是第一次重複,中間沒有重複且最長的子串

1.給出任意一個字串,列印一個最長子串字串及其長度,如果有相同長度的子字串,都要一起打印出來,該子字串滿足以下條件,

第一個字母和最後一個字元是第一次重複

這個子字串的中間字母沒有重複

這個子字串是滿足條件裡面的最長的

如:

adsasadmasd

中滿足條件的是dmasd

 

import re

def maxsubstring(s):

    res_list=[]

    max_len=0

    for i in range(len(s)):

        index=s[i+1:].find(s[i])

        if index !=-1:

            find_str=s[i:i+index+2]  #找出第一個字母和最後一個字母第一次重複的

            if not re.findall(r'(\w).*?(\1)',find_str[1:-1]):   #過濾掉中間重複的字母

                if len(find_str)>max_len:    #找出最長的字串

                    max_len=len(find_str)

                    res_list=[]

                    res_list.append(find_str)

                elif len(find_str)==max_len:  #最長的字串可能有多個

                    res_list.append(find_str)

                else:

                    pass

    return res_list

 

if __name__=="__main__":

    s = 'adsasadmasd'

    print(maxsubstring(s))