Это одна из простых задач в разделе Словари и хэш-карты набора задач для подготовки к собеседованию hackerrank. Ссылка здесь.
Задача гласит, что вам дано magazine
с m
словами и message
с n
словами. Вы должны определить, достаточно ли слов в журнале для построения вашего сообщения.
Решение
Стратегия заключается в использовании Hashmap для преобразования слов в целые числа. Мы используем эту структуру данных для подсчета слов в журнале. Затем мы используем эту хэш-карту, чтобы подсчитать, достаточно ли слов для сообщения, проверяя, есть ли в хэш-карте запись для слова больше 0. Если да, уменьшаем на единицу, иначе печатаем «Нет». Если у нас достаточно слов, после проверки всех слов в заметке мы печатаем «Да».
Код
Полное решение НАЖМИТЕ ЗДЕСЬ.
void checkMagazine(vector<string> magazine, vector<string> note) { unordered_map<string, int> wordMap; int m; int n; m = magazine.size(); n = note.size(); for(int i = 0; i < m; i++){ wordMap[magazine[i]]=wordMap[magazine[i]]+1; } for(int i = 0; i < n; i++){ if(wordMap[note[i]] > 0){ wordMap[note[i]] = wordMap[note[i]]-1; }else{ cout << "No" << endl; return; } } cout << "Yes" << endl; return; }