namespace LongestCharRun
{
using System;
using Classes;
class MainClass
{
public static void Main(string[] args)
{
var app = new App();
app.Run("abbcccddddcccbbba");
}
}
}
namespace LongestCharRun.Classes
{
using System;
public class App
{
private string PrevChar = "";
private string CurrentChar = "";
private int CurrentRun = 1;
private int LongestRun = 0;
private string LongestRunChar = "";
public void Run(string characters)
{
for (var i = 0; i < characters.Length; i++)
{
CurrentChar = characters[i].ToString();
if (!string.IsNullOrWhiteSpace(PrevChar))
{
CheckChars();
}
PrevChar = CurrentChar;
}
Console.WriteLine("{0} {1}", LongestRunChar, LongestRun);
}
private void CheckChars()
{
if (CharMatchChecker.DoCharsMatch(CurrentChar, PrevChar))
{
CurrentRun++;
UpdateLongestRun();
}
else
{
CurrentRun = 1;
}
}
private void UpdateLongestRun()
{
if (CurrentRun > LongestRun)
{
LongestRun = CurrentRun;
LongestRunChar = CurrentChar;
}
}
}
}
namespace LongestCharRun.Classes
{
public class CharMatchChecker
{
public static bool DoCharsMatch(string currentChar, string prevChar)
{
return currentChar == prevChar;
}
}
}