# Count words that appear exactly two times in an array of words

Given an array of n words. Some words are repeated twice, we need count such words.
Examples:

```Input : s[] = {"hate", "love", "peace", "love",
"peace", "hate", "love", "peace",
"love", "peace"};
Output : 1
There is only one word "hate" that appears twice

Input : s[] = {"Om", "Om", "Shankar", "Tripathi",
"Tom", "Jerry", "Jerry"};
Output : 2
There are two words "Om" and "Jerry" that appear
twice.
```

Source : Amazon Interview

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

1. Traverse the given array, store counts of words in a hash table
2. Traverse hash table and count all words with count 2.

Below is the implementation.

## C++

```// C++ program to count all words with count
// exavtly 2.
#include <bits/stdc++.h>
using namespace std;

// Returns count of words with frequency
// exactly 2.
int countWords(string str[], int n)
{
unordered_map<string, int> m;
for (int i = 0; i < n; i++)
m[str[i]] += 1;

int res = 0;
for (auto it = m.begin(); it != m.end(); it++)
if ((it->second == 2))
res++;

return res;
}

// Driver code
int main()
{
string s[] = { "hate", "love", "peace", "love",
"peace", "hate", "love", "peace",
"love", "peace" };
int n = sizeof(s) / sizeof(s[0]);
cout << countWords(s, n);
return 0;
}
```

## Java

```// Java program to count all words with count
// exactly 2.
import java.util.HashMap;
import java.util.Map;
public class GFG {

// Returns count of words with frequency
// exactly 2.
static int countWords(String str[], int n)
{
// map to store count of each word
HashMap<String, Integer> m = new HashMap<>();

for (int i = 0; i < n; i++){
if(m.containsKey(str[i])){
int get = m.get(str[i]);
m.put(str[i], get + 1);
}
else{
m.put(str[i], 1);
}
}

int res = 0;
for (Map.Entry<String, Integer> it: m.entrySet()){
if(it.getValue() == 2)
res++;
}

return res;
}

// Driver code
public static void main(String args[])
{
String s[] = { "hate", "love", "peace", "love",
"peace", "hate", "love", "peace",
"love", "peace" };
int n = s.length;
System.out.println( countWords(s, n));
}
}
// This code is contributed by Sumit Ghosh
```

Output:

```1
```

This article is contributed by Saumya Tiwari. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

# GATE CS Corner    Company Wise Coding Practice

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.
1.6 Average Difficulty : 1.6/5.0
Based on 36 vote(s)