using System.Collections.Generic;
public static void Main()
Console.WriteLine("Initiating Test");
Console.WriteLine(Environment.NewLine);
Console.WriteLine(Environment.NewLine);
var testList = new List<List<string>>();
testList.Add(usernames(new List<string> { "ken", "paul" , "ken", "hani", "ken" }));
testList.Add(usernames(new List<string> { "ken", "paul"}));
testList.Add(usernames(new List<string> { "ken", "paul" , "ken", "hani", "ken", "ken" }));
testList.Add(usernames(new List<string> { "steve", "steve" , "paul", "steve", "matt" }));
testList.Add(usernames(new List<string> { "matt", "paul" }));
testList.Add(usernames(new List<string> { "paul", "hani" , "hani", "hani", "paul" }));
testList.Add(usernames(new List<string> { "tatum", "charles" , "ken", "paul", "ken", "tatum", "tatum", "tatum", "paul", "paul" }));
foreach (var test in testList){
foreach (var testItem in test){
Console.WriteLine(testItem);
Console.WriteLine(Environment.NewLine);
public static List<string> usernames(List<string> u){
HashSet<string> hashSet = new HashSet<string>();
for ( var i = 0; i < u.Count; i++){
if (hashSet.Contains(u[i])){
var dupeCount = hashSet.Where(a=> a.Contains(u[i])).Count();
hashSet.Add(MakeUnique(u[i], dupeCount));
return new List<string>(hashSet);
public static string MakeUnique(string value, int count){
return string.Format("{0}{1}", value, count);