using System; using System.Text; public class Test { private static string FindLcs(string s, string t) { var L = new int[s.Length, t.Length]; var z = 0; var ret = new StringBuilder(); for (var i = 0 ; i != s.Length ; i++) { for (var j = 0 ; j != t.Length ; j++) { if (s[i] == t[j]) { if (i == 0 || j == 0) { L[i,j] = 1; } else { L[i,j] = L[i-1,j-1] + 1; } if (L[i,j] > z) { z = L[i,j]; ret = new StringBuilder(); } if (L[i,j] == z) { ret.Append(s.Substring( i-z+1, z)); } } else { L[i,j]=0; } } } return ret.ToString(); } private static string CutLcs(string s, string t) { for (;;) { var lcs = FindLcs(s, t); if (lcs.Length < 10) break; s = s.Replace(lcs, string.Format("[{0}]", lcs.Length)); } return s; } public static void Main() { string firstS = "/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDABQODxIPDRQSERIXFhQYHzMhHxwcHz8tLyUzSkFOTUlBSEZSXHZkUldvWEZIZoxob3p9hIWET2ORm4+AmnaBhH//2wBDARYXFx8bHzwhITx/VEhUf39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3//"; string secondS = "abcdefg2wBDABQODxIPDRQSERIXFh/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/abcdefg"; Console.WriteLine(CutLcs(firstS, secondS)); } }