using System;
using System.Linq;
using System.Text;
class Program
{
private static void Main()
{
var replaceCodes = new[] { "rown", "he", " j"};
var sb = new StringBuilder().Append("The quick brown fox jumps over the lazy dog");
var outStr = replaceCodes.Aggregate(sb, StringBilderCleaner).ToString();
Console.WriteLine(outStr);
}
static StringBuilder StringBilderCleaner(StringBuilder sbStr, string rmStr)
{
var startIndex = 0;
var inProcces = false;
for (var i = 0; i < sbStr.Length; i++)
{
if (inProcces)
{
var l = i - startIndex;
if (l == rmStr.Length)
{
inProcces = false;
sbStr.Remove(startIndex, l);
}
else inProcces = rmStr[l] == sbStr[i];
}
else
{
if (sbStr[i] != rmStr[0]) continue;
startIndex = i;
inProcces = true;
}
}
return sbStr ;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQ7CgpjbGFzcyBQcm9ncmFtCnsKICAgIHByaXZhdGUgc3RhdGljIHZvaWQgTWFpbigpCiAgICB7CiAgICAgICAgdmFyIHJlcGxhY2VDb2RlcyA9IG5ld1tdIHsgInJvd24iLCAiaGUiLCAiIGoifTsKICAgICAgICB2YXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigpLkFwcGVuZCgiVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZyIpOwogICAgICAgIHZhciBvdXRTdHIgPSByZXBsYWNlQ29kZXMuQWdncmVnYXRlKHNiLCBTdHJpbmdCaWxkZXJDbGVhbmVyKS5Ub1N0cmluZygpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKG91dFN0cik7CiAgICB9CgogICAgc3RhdGljIFN0cmluZ0J1aWxkZXIgU3RyaW5nQmlsZGVyQ2xlYW5lcihTdHJpbmdCdWlsZGVyIHNiU3RyLCBzdHJpbmcgcm1TdHIpCiAgICB7CiAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSAwOwogICAgICAgIHZhciBpblByb2NjZXMgPSBmYWxzZTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNiU3RyLkxlbmd0aDsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGluUHJvY2NlcykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIGwgPSBpIC0gc3RhcnRJbmRleDsKICAgICAgICAgICAgICAgIGlmIChsID09IHJtU3RyLkxlbmd0aCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpblByb2NjZXMgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBzYlN0ci5SZW1vdmUoc3RhcnRJbmRleCwgbCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGluUHJvY2NlcyA9IHJtU3RyW2xdID09IHNiU3RyW2ldOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKHNiU3RyW2ldICE9IHJtU3RyWzBdKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBpOwogICAgICAgICAgICAgICAgaW5Qcm9jY2VzID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gc2JTdHIgOwogICAgfQp9Cg==