Это одна из простых задач в разделе Словари и хэш-карты набора задач для подготовки к собеседованию 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;
}