OP , / , , Run Length encoding , . :
string str = "aaaaaaaabccccccaadddddaaa";
var pairs = str
.Zip((str + str.Last()).Skip(1),
(prev, current) => new { prev, current });
var sequence = 0;
var grps = pairs.GroupBy(p =>
new { Ch = p.prev,
Sequence = p.current == p.prev
? sequence
: sequence++});
var rle = String.Join("",
grps.Select(g => g.Count() > 1
? g.Key.Ch.ToString() + g.Count().ToString()
: g.Key.Ch.ToString()));
Console.WriteLine(rle);
Edit
, POLA, :
Zip (Skip),Zip , .- "" RLE , , " "? .
- lambda
GroupBy - @Jonesy/@Tim
String.Join .