fork download
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. const int MAX_SIZE = 100000;
  6. const int LETTER = 26;
  7.  
  8. void calculateFrequency(const char *word, int frq[]) {
  9. for (int i = 0; i < LETTER; ++i) {
  10. frq[i] = 0;
  11. }
  12. for (int i = 0; word[i] != '\0'; ++i) {
  13. ++frq[word[i] - 'a'];
  14. }
  15. }
  16.  
  17. bool areAnagrams(const int frq1[], const char *word2) {
  18. int frq2[LETTER] = {0};
  19. calculateFrequency(word2, frq2);
  20. for (int i = 0; i < LETTER; ++i) {
  21. if (frq1[i] != frq2[i]) {
  22. return false;
  23. }
  24. }
  25. return true;
  26. }
  27.  
  28. int countAnagrams(const int frq1[], const char *currentWord) {
  29. if (areAnagrams(frq1, currentWord)) {
  30. return 1;
  31. }
  32. return 0;
  33. }
  34.  
  35. int processWords(int wordCount, const int frq1[]) {
  36. int anagramCount = 0;
  37. char currentWord[MAX_SIZE + 1];
  38. for (int i = 0; i < wordCount; ++i) {
  39. cin >> currentWord;
  40. anagramCount += countAnagrams(frq1, currentWord);
  41. }
  42. return anagramCount;
  43. }
  44.  
  45. int main() {
  46. int wordCount, frq1[LETTER];
  47. cin >> wordCount;
  48. char referenceWord[MAX_SIZE + 1];
  49. cin >> referenceWord;
  50. calculateFrequency(referenceWord, frq1);
  51. int anagramCount = processWords(wordCount, frq1);
  52. cout << anagramCount;
  53. return 0;
  54. }
Success #stdin #stdout 0.01s 5264KB
stdin
4
server
revers
serve
sserver
server


stdout
2