Longest Palindromic Substring

Hồi cấp 3 tôi dùng quy hoạch động để giải bài này, bây giờ với tôi tạo một mảng hai chiều N*N sẽ là một giải pháp sau cùng.

Xâu đối xứng có một tính chất quan trọng, nó có thể quy về hai dạng là: abba và aba. Tôi sẽ dùng một phương pháp mở rộng xâu từ giữa. Ta cài đặt một hàm mở rộng expand(start,end).

Như vậy nó sẽ có hai loại mở rộng là expand(i,i) (aba) và expand(i,i+1) abba. Đến đây thì bài toán đã được giải quyết để tìm được độ dài xâu đối xứng dài nhất.

Giờ để đưa ra được substring, ta có hai biến start=0 và end = 0. Ta sẽ cặp nhật lại hai biến này khi len > start - end .

start = i - (len-1)/2 . (len-1 để không bỏ xót trường hợp i =0).
end = i+len/2.
Đây là code trên Java:


Cảm ơn bạn !

Nhận xét

Bài đăng phổ biến từ blog này

Hiểu về Norm Regularization

Faceswap & state-of-the-art (SOTA)