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

猜你喜欢

转载自www.cnblogs.com/reyinever/p/10134704.html