Сложность: easy
Дана строка s, вернуть true, если перестановка строки может образовать палиндром, и false в противном случае.
Пример:
Input: s = "code"
Output: false
👨💻 Алгоритм:
1️⃣Вместо использования встроенной хеш-таблицы, используем массив в качестве хеш-таблицы. Для этого создаем массив длиной 128, где каждый индекс соответствует одному из 128 возможных ASCII-символов.
2️⃣Проходим по строке s и записываем количество вхождений каждого символа в этот массив.
3️⃣Затем определяем количество символов с нечетным числом вхождений, чтобы определить, возможна ли палиндромная перестановка строки s.
😎 Решение:
class Solution {
canPermutePalindrome(s) {
const map = new Array(128).fill(0);
let count = 0;
for (const char of s) {
const index = char.charCodeAt(0);
map[index]++;
if (map[index] % 2 === 0) {
count--;
} else {
count++;
}
}
return count <= 1;
}
}Ставь 👍 и забирай 📚 Базу знаний