Задача: 1002. Find Common Characters
Если задан массив строк words, верните массив всех символов, которые встречаются во всех строках внутри слов (включая дубликаты). Вы можете вернуть ответ в любом порядке.
Пример:
Input: words = ["bella","label","roller"]
Output: ["e","l","l"]
👨💻 Алгоритм:
1️⃣Инициализация частотного массива:
Создайте массив для хранения минимальной частоты каждого символа, который будет встречаться во всех словах.
2️⃣Обработка каждого слова:
Для каждого слова создайте временный массив для хранения частоты каждого символа в этом слове.
Обновите основной частотный массив, сравнивая его с временным массивом и сохраняя минимальные частоты каждого символа.
3️⃣Формирование результата:
Создайте результирующий массив, добавляя каждый символ столько раз, сколько его минимальная частота.
😎 Решение:
class Solution {
commonChars(words) {
const minFreq = new Array(26).fill(Infinity);
for (const word of words) {
const freq = new Array(26).fill(0);
for (const char of word) {
freq[char.charCodeAt() - 97]++;
}
for (let i = 0; i < 26; i++) {
minFreq[i] = Math.min(minFreq[i], freq[i]);
}
}
const result = [];
for (let i = 0; i < 26; i++) {
for (let j = 0; j < minFreq[i]; j++) {
result.push(String.fromCharCode(97 + i));
}
}
return result;
}
}Ставь 👍 и забирай 📚 Базу знаний