Решение Python для проблемы разреженных массивов на HackerRank

Вот решение Python проблемы «разреженных массивов» на HackerRank:

def matchingStrings(strings, queries):
    string_counts = {}
    for string in strings:
        if string in string_counts:
            string_counts[string] += 1
        else:
            string_counts[string] = 1
    results = []
    for query in queries:
        if query in string_counts:
            results.append(string_counts[query])
        else:
            results.append(0)
    return results

В этом решении мы определяем функцию под названием matchingStrings, которая принимает два параметра: stringsи queries. strings— это список строк, представляющих входные строки, а queries— это список строк, представляющих запросы, которые нам нужно посчитать.

Мы создаем словарь под названием string_countsдля хранения количества каждой строки во входном списке. Мы перебираем список stringsи соответствующим образом обновляем счетчик в словаре string_counts.

Далее мы перебираем список запросов. Для каждого запроса, если он существует в словаре string_counts, мы добавляем его счетчик в список results. В противном случае мы добавляем 0.

Наконец, мы возвращаем список results, содержащий счетчики для каждого запроса.

Временная сложность этого решения равна O(n + m), где n — длина списка strings, а m — длина списка queries.