获取字符串中长度最长的回文字符串

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