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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM