Related Articles
Count words that appear exactly two times in an array of words
• Difficulty Level : Easy
• Last Updated : 06 Jun, 2021

Given an array of n words. Some words are repeated twice, we need to 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

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``// exactly 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[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 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`

## Javascript

 ``
Output

`1`

#### Method 2: Using Built-in Python functions:

• Count the frequencies of every word using the Counter function
• Traverse in frequency dictionary
• Check which word has frequency 2. If so, increase the count
• Print Count

Below is the implementation:

## Python

 `# importing Counter from collections``from` `collections ``import` `Counter` `# Python program to count all words with count exactly 2.``# Returns count of words with frequency exactly 2.``def` `countWords(stri, n):``  ` `    ``# Calculating freequency using Counter``    ``m ``=` `Counter(stri)` `    ``count ``=` `0``    ``# Traversing in freq dictionary``    ``for` `i ``in` `m:``        ``if` `m[i] ``=``=` `2``:``            ``count ``+``=` `1` `    ``return` `count` `# 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 vikkycirus`
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 write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer DSA Live Classes

My Personal Notes arrow_drop_up