ví dụ: "ccddcc" trong chuỗi "abaccddccefe"
Tôi đã nghĩ ra một giải pháp nhưng nó chạy trong O (n ^ 2) thời gian
Algo 1:
Các bước: Đó là một phương pháp vũ phu
- Có 2 vòng lặp
for cho i = 1 đến i nhỏ hơn array.length -1
cho j = i + 1 đến j nhỏ hơn array.length - Bằng cách này, bạn có thể nhận được chuỗi con của mọi kết hợp có thể có từ mảng
- Có một hàm palindrome kiểm tra xem một chuỗi có phải là palindrome không
- vì vậy đối với mọi chuỗi con (i, j) gọi hàm này, nếu nó là một palindrome thì hãy lưu trữ nó trong một biến chuỗi
- Nếu bạn tìm thấy chuỗi con palindrome tiếp theo và nếu nó lớn hơn chuỗi hiện tại, hãy thay thế nó bằng chuỗi hiện tại.
- Cuối cùng biến chuỗi của bạn sẽ có câu trả lời
Vấn đề: 1. Thuật ngữ này chạy trong thời gian O (n ^ 2).
Algo 2:
- Đảo ngược chuỗi và lưu trữ nó trong mảng khác nhau
- Bây giờ hãy tìm chuỗi con phù hợp lớn nhất giữa cả hai mảng
- Nhưng điều này cũng chạy trong thời gian O (n ^ 2)
Các bạn có thể nghĩ ra một thuật ngữ chạy trong thời gian tốt hơn không. Nếu có thể O (n) thời gian
O(n^2)
lấy các chuỗi con *O(n)
để kiểm tra xem chúng có phải là palindromes không, tổng cộng làO(n^3)
?