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