Программа курса:
Разбор задачи: Драгоценности и камни
Предложенный нами код решения:
def numJewelsInStones(jewels: str, stones: str) -> int:
return sum(1 for stone in stones if stone in jewels)- Основная идея решения:
- Мы проверяем каждый камень в строке
stones, является ли он драгоценным камнем из строкиjewels. - Для каждого камня из
stones, если этот камень встречается вjewels, увеличиваем счетчик.
- Мы проверяем каждый камень в строке
- Как работает функция:
sum(1 for stone in stones if stone in jewels):- Это выражение состоит из генератора. Генератор пробегает по каждому камню в строке
stones. - Для каждого камня проверяется условие
if stone in jewels. Если условие выполняется (т.е. текущий камень является драгоценным), то к сумме прибавляется 1. - Когда весь процесс завершен, результатом будет общее количество драгоценных камней из
stones.
- Это выражение состоит из генератора. Генератор пробегает по каждому камню в строке
- Подробное объяснение:
- Строка
stonesпредставляет камни, которые у вас есть. Каждый символ в строке — это отдельный камень. - Строка
jewelsсодержит типы драгоценных камней. Камень в строкеstonesсчитается драгоценным, если его символ присутствует в строкеjewels. - Функция проходит через все камни в строке
stonesи проверяет, является ли каждый камень драгоценным (наличие его в строкеjewels). - Для каждого такого камня добавляется единица к итоговому счетчику.
- Строка
- Пояснение работы генератора:
- Генератор — это специальный объект, который позволяет перебирать элементы по одному, не создавая заранее всех значений. В данном случае он позволяет нам проверить каждый камень в строке
stones. - Каждый раз, когда условие
stone in jewelsистинно, генератор генерирует1, и все такие единички суммируются функциейsum().
- Генератор — это специальный объект, который позволяет перебирать элементы по одному, не создавая заранее всех значений. В данном случае он позволяет нам проверить каждый камень в строке
- Пример работы:
- Если
jewels = "aA", аstones = "aAAbbbb", то для каждого камня изstonesмы проверим, встречается ли он вjewels:- Камень 'a' присутствует в
jewels, значит добавляем 1. - Камень 'A' присутствует в
jewels, значит добавляем еще 1. - Камень 'A' снова присутствует в
jewels, добавляем 1. - Камни 'b' и 'b' не являются драгоценными, пропускаем их.
- Камни 'b' и 'b' снова не являются драгоценными, их тоже пропускаем.
- Камень 'a' присутствует в
- В итоге итоговая сумма будет равна 3, что и является правильным ответом.
- Если
Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии