# 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 ` `using` `namespace` `std; ` ` `  `// Returns count of words with frequency ` `// exactly 2. ` `int` `countWords(string str[], ``int` `n) ` `{ ` `    ``unordered_map 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); ` `    ``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 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 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 `

## Python3

 `# Python program to count all ` `# words with count ` `# exactly 2. ` `  `  `# Returns count of words with frequency ` `# exactly 2. ` `def` `countWords(stri, n): ` `    ``m ``=` `dict``() ` `    ``for` `i ``in` `range``(n): ` `        ``m[stri[i]] ``=` `m.get(stri[i],``0``) ``+` `1` `  `  `    ``res ``=` `0` `    ``for` `i ``in` `m.values(): ` `        ``if` `i ``=``=` `2``: ` `            ``res ``+``=` `1` `  `  `    ``return` `res ` `  `  `# Driver code ` `s ``=` `[ ``"hate"``, ``"love"``, ``"peace"``, ``"love"``, ` `      ``"peace"``, ``"hate"``, ``"love"``, ``"peace"``, ` `                ``"love"``, ``"peace"` `] ` `n ``=` `len``(s) ` `print``(countWords(s, n)) ` ` `  `# This code is contributed ` `# by Shubham Rana `

## C#

 `// C# program to count all words with count ` `// exactly 2. ` `using` `System; ` `using` `System.Collections.Generic; ` ` `  `class` `GFG  ` `{ ` `     `  `    ``// Returns count of words with frequency ` `    ``// exactly 2. ` `    ``static` `int` `countWords(String []str, ``int` `n) ` `    ``{ ` `        ``// map to store count of each word ` `        ``Dictionary m = ``new` `Dictionary(); ` `         `  `        ``for` `(``int` `i = 0; i < n; i++) ` `        ``{ ` `            ``if``(m.ContainsKey(str[i])) ` `            ``{ ` `                ``int` `get` `= m[str[i]]; ` `                ``m.Remove(str[i]); ` `                ``m.Add(str[i], ``get` `+ 1); ` `            ``} ` `            ``else` `            ``{ ` `                ``m.Add(str[i], 1); ` `            ``} ` `        ``} ` `             `  `        ``int` `res = 0; ` `        ``foreach``(KeyValuePair it ``in` `m) ` `        ``{ ` `            ``if``(it.Value == 2) ` `                ``res++; ` `        ``} ` `                 `  `        ``return` `res; ` `    ``} ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `Main(String []args) ` `    ``{ ` `        ``String []a = { ``"hate"``, ``"love"``, ``"peace"``, ``"love"``, ` `                    ``"peace"``, ``"hate"``, ``"love"``, ``"peace"``, ` `                    ``"love"``, ``"peace"` `}; ` `        ``int` `n = a.Length; ` `        ``Console.WriteLine( countWords(a, n)); ` `    ``} ` `} ` ` `  `// This code is contributed by Rajput-Ji `

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.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up

Improved By : Rajput-Ji

Article Tags :
Practice Tags :

3

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.