C# 从两个字符串中找出最大公共子串

发布时间 2023-12-27 15:00:34作者: 芈璐
            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));//最后输出即最大公共子串的内容