Сложность: easy
Если задан массив строк words, верните массив всех символов, которые встречаются во всех строках внутри слов (включая дубликаты). Вы можете вернуть ответ в любом порядке.
Пример:
Input: words = ["bella","label","roller"]
Output: ["e","l","l"]
👨💻 Алгоритм:
1⃣Инициализация частотного массива:
Создайте массив для хранения минимальной частоты каждого символа, который будет встречаться во всех словах.
2⃣Обработка каждого слова:
Для каждого слова создайте временный массив для хранения частоты каждого символа в этом слове.
Обновите основной частотный массив, сравнивая его с временным массивом и сохраняя минимальные частоты каждого символа.
3⃣Формирование результата:
Создайте результирующий массив, добавляя каждый символ столько раз, сколько его минимальная частота.
😎 Решение:
class Solution {
func commonChars(_ words: [String]) -> [String] {
var min_freq = [Int](repeating: Int.max, count: 26)
for word in words {
var freq = [Int](repeating: 0, count: 26)
for char in word {
freq[Int(char.asciiValue! - Character("a").asciiValue!)] += 1
}
for i in 0..<26 {
min_freq[i] = min(min_freq[i], freq[i])
}
}
var result = [String]()
for i in 0..<26 {
for _ in 0..<min_freq[i] {
result.append(String(UnicodeScalar(i + Int(Character("a").asciiValue!))!))
}
}
return result
}
}Ставь 👍 и забирай 📚 Базу знаний