using System.Collections;
using System.Collections.Generic;
public static void Main(String[] args) {
String[] competitors = {"newshop", "shopnow", "afshion", "fashionbeats", "mymarket", "tcellular"};
String[] reviews = {"newshop is providing good services in the city; everyone should use newshop", "best services by newshop", "fashionbeats has great services in the city", "i am proud to have fashionbeats", "mymarket has awesome services", "Thanks Newshop for the quick delivery afshion"};
List<String> result = GetTopCompetitors(numCompetitors, topNCompetitors, competitors, numReviews, reviews);
public static List<string> GetTopCompetitors(int numCompetitors, int topNCompetitors
, String[] competitors, int numReviews, String[] reviews)
var map = new Dictionary<string,int>();
for(int i=0; i<numCompetitors; i++) {
map.Add(competitors[i].ToLower(), 0);
foreach(String review in reviews) {
String[] words = review.ToLower().Split(' ');
var used = new HashSet<string>();
foreach(String word in words) {
map[word] = map[word] + 1;
var itemFreqList = new ItemFrequency[map.Keys.Count];
foreach(var key in map.Keys)
itemFreqList[k++] = new ItemFrequency(key, map[key]);
Array.Sort(itemFreqList, (x,y) => {
return x.Frequency == y.Frequency ?
y.Frequency.CompareTo(x.Frequency);
var result = new List<string>();
for(int i=0; i<topNCompetitors && i<itemFreqList.Length; i++){
result.Add(itemFreqList[i].Key);
public class ItemFrequency
public ItemFrequency(string key, int frequency) { Key = key; Frequency = frequency; }
public string Key { get; set; }
public int Frequency { get; set; }