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