Рубрики
Без рубрики

Алгоритмы решения проблемы: Записку с требованием выкупа

Решение алгоритмов Проблемы с TK. Теги с алгоритмами, Python, Computerscience, интервью.

Этот пост является частью Алгоритмы проблемы решения серии. И это было изначально опубликовано на Блог Tk Отказ

Описание проблемы

Это Выкуп примечание проблема. Описание выглядит так:

Учитывая произвольную ransom Note String и другую строку, содержащую буквы из всех журналов, написать функцию, которая вернет True, если заметку выкупа можно построить из журналов; В противном случае это вернет ложь.

Каждая буква в загон записи журнала может использоваться только один раз в вашем выкупке.

Примеры

# ransomNote = "a", magazine = "b"
# => false

# ransomNote = "aa", magazine = "ab"
# => false

# ransomNote = "aa", magazine = "aab"
# => true

Решение

def can_construct(ransom_note, magazine):
    if ransom_note == '':
        return True

    if magazine == '':
        return False

    letters_counter = {}

    for letter in magazine:
        if letter in letters_counter:
            letters_counter[letter] += 1
        else:
            letters_counter[letter] = 1

    for char in ransom_note:
        if char not in letters_counter or letters_counter[char] == 0:
            return False

        letters_counter[char] -= 1

    return True

Ресурсы

Оригинал: “https://dev.to/teekay/algorithms-problem-solving-ransom-note-2f5f”