1. 程式人生 > >獲取字符串中長度最長的回文字符串

獲取字符串中長度最長的回文字符串

div clas app ont get length append spa first

def get_f_l(s_length,s,list_all,last_d):
    max_l=0
    first_d=0
    last_d=0
    for i in range(len(list_all)):
        if((i+1)==len(list_all)):
            break
        for j in range(i+1,len(list_all)):
            diff=list_all[j]-list_all[i]+1
            if(list_all[i]==0):
                
if(list_all[j]==s_length-1): if(s==s[::-1]): return 0,list_all[j] else: if(s[:list_all[j]+1]==s[list_all[j]::-1]): if(diff>max_l): max_l=diff first_d
=0 last_d=list_all[j] else: if(list_all[j]==s_length-1): if(s[list_all[i]:]==s[list_all[j]:list_all[i]-1:-1]): if(diff>max_l): max_l=diff first_d
=list_all[i] last_d=list_all[j] else: if(s[list_all[i]:list_all[j]+1]==s[list_all[j]:list_all[i]-1:-1]): if(diff>max_l): max_l=diff first_d=list_all[i] last_d=list_all[j] return first_d,last_d def solution(s): s_length=len(s) max_len=0 f=0 l=0 s_x=set(s) for i in s_x: last_d=s.rfind(i) list_all=[] oper_s=s i_num=0 while(True): x=s.find(i,i_num) if(not x==-1): i_num=x+1 list_all.append(x) else: break if(len(list_all)==1): continue first_d,last_d=get_f_l(s_length,s,list_all,last_d) diff=last_d-first_d if(diff>max_len): f=first_d l=last_d max_len=diff return s[f:l+1] s="abccccde" print(solution(s))

獲取字符串中長度最長的回文字符串