using System.Collections.Generic;
public static void Main()
Console.WriteLine("Running task 2 version 1");
foreach(var data in SampleData())
var expectedResult = (int) data[2];
var result = Solution(data[0].ToString(), (int) data[1]);
Assert.Equal(expectedResult, result);
Console.WriteLine("All tests passed!");
public static int Solution(string s, int k)
var shortest = int.MaxValue;
while (i + k - 1 < strLen)
var str = s.Remove(i, k);
var compressed = Compress(str);
if (shortest > compressed.Length)
shortest = compressed.Length;
private static string Compress(string s)
var sb = new StringBuilder();
AppendContent(sb, curChar, count);
AppendContent(sb, curChar, count);
private static void AppendContent(StringBuilder sb, char curChar, int count)
sb.Append(count).Append(curChar);
public static IEnumerable<object[]> SampleData()
yield return new object[] { "abbbccddccc", 3, 5 };
yield return new object[] { "aaaaaaaaaaabbxaaaaaaaaaa", 3, 3 };
yield return new object[] { "aaaaaaaaaaaaaaaaaaaaa", 3, 3 };
yield return new object[] { "aaaaaaaaaa", 3, 2 };
yield return new object[] { "aaaaaaaaaaabbxaaaaaaaaaa", 0, 9 };
yield return new object[] { "abcdddefg", 2, 6 };
yield return new object[] { "a", 2, 0 };
yield return new object[] { "aab", 3, 0 };
yield return new object[] { "aab", 0, 3 };
yield return new object[] { "abadagggff", 9, 1 };
yield return new object[] { "abcdsgf", 3, 4 };
yield return new object[] { "baaacdsagf", 3, 5 };
yield return new object[] { "bacdsaaagf", 3, 5 };
public static class Assert
public static void Equal(int expected, int actual)
var message = "Assert.Equal() Failure\n"
+ "Expected: " + expected + "\n"
throw new Exception(message);