using System.Collections.Generic;
public static void Main()
var tests = new string[] { "Yellow", "Money", "Purple", "Me", "You", "Hiiiiiiiii" };
Console.WriteLine("LINQ: " + UniqueStringLinq(t) + ", Non-LINQ: " + UniqueStringNoLinq(t));
public static string UniqueStringLinq(string str)
if (str.Length < 3) return str;
var midStr = str.Substring(1, str.Length - 2);
var midCount = midStr.Distinct().Count();
return string.Concat(str[0], midCount, str[str.Length - 1]);
public static string UniqueStringNoLinq(string str)
if (str.Length < 3) return str;
var uniqueLetters = new Dictionary<char, int>();
var midStr = str.Substring(1, str.Length - 2);
foreach (var c in midStr)
if (!uniqueLetters.ContainsKey(c))
var midCount = uniqueLetters.Keys.Count();
return string.Concat(str[0], midCount, str[str.Length - 1]);