Có một thuật toán được đặt tên theo thuật toán của Manacher, thuật toán này thực sự nhanh, thuật toán thời gian tuyến tính.
Xem tài liệu tham khảo của Wikipedia
Phần tái bút: Nếu bạn thực sự quen thuộc với Thuật toán Z , bạn sẽ thấy rằng chúng giống nhau.
Biên tập
Tôi vừa hiểu sai ý nghĩa của OP (nhưng tôi không muốn xóa thông tin về thủ tục. Nó hơi hữu ích). Anh ta có nghĩa là chuỗi dài nhất của chuỗi, vì vậy lập trình động có vẻ tốt:
trong đó biểu thị độ dài của chuỗi palindrom dài nhất của và là khung Iverson tôi nghĩ nó giống như LCS .
fj , kfk , kfj , k= tối đa ( fj , k + 1, fj + 1 , k, 2 [ Sj= Sk] + fj + 1 , k - 1) ,j < k= 1= 0 ,j > k
fj , kSj..k[P]