string strA = "ahjeibnkwed";
string strB = "oiopqdibnwaaldo";
int iMax = 0;//公共子串的最大长度
int iEnd = 0;//公共子串的起始位置
int iA = strA.Length;
int iB = strB.Length;
int[,] iFind = new int[iA + 1, iB + 1];//二维数组
for (int i = 1; i < iA; i++)
{
for (int j = 1; j < iB; j++)
{
if (strA[i - 1] == strB[j - 1])//当字符串A中字符和字符串B中字符相等时
{
iFind[i, j] = iFind[i - 1, j - 1] + 1;//将该相等位置在上一位值基础上累加
if (iFind[i, j] > iMax)//循环比较这个最大的位置值
{
iMax = iFind[i, j];
iEnd = i - 1;
}
}
}
}
Console.WriteLine(strA.Substring(iEnd - iMax + 1, iMax));//最后输出即最大公共子串的内容