Сложность: easy
Если задан массив строк words, верните массив всех символов, которые встречаются во всех строках внутри слов (включая дубликаты). Вы можете вернуть ответ в любом порядке.
Пример:
Input: words = ["bella","label","roller"]
Output: ["e","l","l"]
👨💻 Алгоритм:
1⃣Инициализация частотного массива:
Создайте массив для хранения минимальной частоты каждого символа, который будет встречаться во всех словах.
2⃣Обработка каждого слова:
Для каждого слова создайте временный массив для хранения частоты каждого символа в этом слове.
Обновите основной частотный массив, сравнивая его с временным массивом и сохраняя минимальные частоты каждого символа.
3⃣Формирование результата:
Создайте результирующий массив, добавляя каждый символ столько раз, сколько его минимальная частота.
😎 Решение:
public class Solution {
public IList<string> CommonChars(string[] words) {
int[] minFreq = new int[26];
Array.Fill(minFreq, int.MaxValue);
foreach (string word in words) {
int[] freq = new int[26];
foreach (char c in word) {
freq[c - 'a']++;
}
for (int i = 0; i < 26; i++) {
minFreq[i] = Math.Min(minFreq[i], freq[i]);
}
}
IList<string> result = new List<string>();
for (int i = 0; i < 26; i++) {
for (int j = 0; j < minFreq[i]; j++) {
result.Add(((char)('a' + i)).ToString());
}
}
return result;
}
}Ставь 👍 и забирай 📚 Базу знаний