Подсчёт драгоценных камней среди имеющихся камней

Преобразуйте jewels в множество и посчитайте символы stones, присутствующие в нём. Регистр не изменяйте.

Короткий ответ

Что ответить на собеседовании

Преобразуйте jewels в множество и посчитайте символы stones, присутствующие в нём. Регистр не изменяйте.

Подробный разбор

Ответ с пояснениями

Условие

Даны две строки: jewels — набор символов, каждый из которых обозначает тип драгоценного камня, и stones — строка, где каждый символ представляет камень, находящийся у вас. Необходимо посчитать, сколько символов из stones присутствуют в jewels. При этом сравнение чувствительно к регистру, то есть 'a' и 'A' считаются разными типами.

Example 1: Input: jewels = "aA", stones = "aAAbbbb" Output: 3

Example 2: Input: jewels = "z", stones = "ZZ" Output: 0

Ответ

Преобразуйте jewels в множество и посчитайте символы stones, присутствующие в нём. Регистр не изменяйте.

def count_jewels(jewels, stones):
    allowed = set(jewels)
    return sum(stone in allowed for stone in stones)

assert count_jewels('aA', 'aAAbbbb') == 3
assert count_jewels('z', 'ZZ') == 0

Каждый камень учитывается отдельно, поэтому две буквы A дают два попадания. Повторение символа внутри jewels не увеличивает вес типа: множество убирает такие дубли.

Ожидаемое время O(j + s), память O(k), где k — число различных типов драгоценных камней. Если jewels или stones пусты, результат равен нулю.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее