# 409. Longest Palindrome # # Tóm tắt đề bài Cho một chuỗi s chứa các chữ cái tiếng Anh, trả về độ dài của chuỗi palindrome lớn nhất tạo ra từ các kí tự trong chuỗi s đó. ### Giới hạn - 1 <= s.length <= 2000 ## Lời giải - Có 2 loại chuỗi palindrome: độ dài chẵn hoặc lẻ. - Sử dụng HashMap để đếm số lần xuất hiện của từng kí tự trong chuỗi s. - Nếu đếm đến số chẵn lần xuất hiện của kí tự đó, ta thêm 2 vào kết quả trả về (vì 1 chuỗi palindrome bất kì có thể thêm 2 kí tự giống hệt nhau, 1 vào đầu và 1 vào cuối và nó vẫn là chuỗi palindrome) - Nếu như có bất kì kí tự nào có lẻ lần xuất hiện => thêm 1 vào kết quả trả về (vì chuỗi palindrome độ dài lẻ chấp nhận kí tự ở chính giữa có lẻ lần xuất hiện). ### Độ phức tạp thuật toán Thời gian: $O(N)$ Bộ nhớ: $O(N)$ ### Code tham khảo ```c++ class Solution: def longestPalindrome(self, s: str) -> int: cnt = defaultdict(int) res = 0 for c in s: cnt[c] += 1 if cnt[c] % 2 == 0: res += 2 for count in cnt.values(): if count % 2: res += 1 break return res ```