Преобразуйте 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 пусты, результат равен нулю.