문자열의 최대 길이의 메모 문자열을 찾습니다.

1898 단어
먼저 코드를 내놓고 나중에 코드의 해석을 보충한다. 또한 함수가 출력하는 것은 회문 서브열의 최대 길이와 최대 길이를 가진 모든 회문 서브열의 수조(최대 길이를 가진 회문 서브열은 하나가 아닐 수 있다)
def my_function(s):
    Str=''
    for i in range(len(s)):
        Str=Str+' '+s[i]
    Str=Str+' '                #            ‘ ’,                   ,         
    cover=0
    cover_center=0
    center=[(Str[0],0)]
    length=0
    length_max=1
    length_max_=[]
    for i in range(1,len(Str)):
        if cover != len(Str)-1:
            if ilength_max:
                        length_max_=[]
                    if length>=length_max:
                        length_max_.append(i)
                        length_max=length
                    length=0
            else:
                for j in range(min(i,len(Str)-i-1)):
                    if Str[i-j-1] == Str[i+j+1]:
                        length+=1
                    else:
                        break
                center.append((Str[i],length))
                cover=i+length
                cover_center=i
                if length>length_max:
                    length_max_=[]
                if length>=length_max:
                    length_max_.append(i)
                    length_max=length
                length=0
    S=[]
    if length_max%2 == 0:
        for i in length_max_:
            S.append(s[i//2-length_max//2:i//2+length_max//2])
    else:
        for i in length_max_:
            S.append(s[i//2-length_max//2:i//2+length_max//2+1])          
    return length_max,S
    
if __name__=='__main__':
    length_max,S=my_function('abc')
    print('length_max:',length_max)
    for i in S:
        print(i)

실행 결과
length_max: 1
a
b
c

좋은 웹페이지 즐겨찾기