Сложность: easy
Если задана строка s, состоящая из строчных или прописных букв, верните длину самого длинного палиндрома, который можно построить из этих букв. Буквы чувствительны к регистру, например, "Aa" не считается палиндромом.
Пример:
Input: s = "abccccdd"
Output: 7
👨💻 Алгоритм:
1⃣Создайте словарь для подсчета количества каждого символа в строке.
2⃣Пройдитесь по словарю и добавьте четное количество каждого символа к длине палиндрома. Если встречается нечетное количество символа, добавьте (count - 1) к длине палиндрома.
3⃣Если есть хотя бы один символ с нечетным количеством, добавьте 1 к длине палиндрома для центрального символа.
😎 Решение:
function longestPalindrome($s) {
$charCount = [];
foreach (str_split($s) as $char) {
if (isset($charCount[$char])) {
$charCount[$char]++;
} else {
$charCount[$char] = 1;
}
}
$length = 0;
$oddFound = false;
foreach ($charCount as $count) {
if ($count % 2 == 0) {
$length += $count;
} else {
$length += $count - 1;
$oddFound = true;
}
}
return $oddFound ? $length + 1 : $length;
}Ставь 👍 и забирай 📚 Базу знаний