Дана строка. Определите длину самого длинного палиндрома, который можно
составить из её символов (каждый символ строки используется не больше одного
раза, порядок любой). Палиндром читается одинаково с начала и с конца:
«шалаш», «потоп».
// LongestPalindrome возвращает длину (в символах-рунах) самого длинного
// палиндрома, который можно составить из символов s.
func LongestPalindrome(s string) int
Примеры
"eeefffgggghh" → 11 (например, hggfeeefggh)
"abccccdd" → 7 (dccaccd)
"шалаш" → 5
"Aa" → 1 (регистр различается)
"" → 0
Ограничения
0 ≤ len(s) ≤ 10⁶ байт, строка — корректный UTF-8. Символ — руна, а не байт:
в «шалаш» 5 символов, хотя байт 10.
- Ожидается O(n).
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.