# 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.

My Personal Notes arrow_drop_up

Improved By : Rajput-Ji

Article Tags :
Practice Tags :

2

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