最大公共字串 C#

今天看到一个这样的问题,求2个字符串的公共最大字串,比如aabbccc与abd的最大公共字串是abcd,这个问题用数据库的方式很好解决,把字符串拆成单个的字符,再插入一个单列的表,然后select distinct column from table就可以解决,但是数据库里面的算法又是如何计算的呢,较劲了一下,写了一个小程序,数据库里面的distinct的本质应该也是这样的吧,先看几张图(程序完全手打,没有参照网络任何位置的代码 咯咯)。
转载请注明出处,联系我: [email protected]
本人热衷于数据库技术及算法的研究,志同道合之士, 欢迎探讨
在这里插入图片描述

        private int j;
        private string MaximumCommonSubstring(string str1,string str2)
        {
            string c = "";
            c = CompareString(str1, "");//先让字串1与空值比较,返回字串1的本身的最大公共字串
            c = CompareString(str2,c);//再让字串2与上面的结果比较,返回最终的字串
            return c;
        }
       //比较2个字串,返回最大公共字串
        private string CompareString(string str1,string str2)
        {
            for (int i = 0; i < str1.Length; i++)
            {
                for (j = 0; j < str2.Length; j++)
                {
                    if (str2.Substring(j, 1) == str1.Substring(i, 1))
                    {
                        break;
                    }
                }
                if (j == str2.Length)
                {
                    str2 += str1.Substring(i, 1);
                }
            }
            return str2;
        }
        private void Button1_Click(object sender, EventArgs e)
        {
            textBox3.Text = MaximumCommonSubstring(textBox1.Text,textBox2.Text);
        }
发布了10 篇原创文章 · 获赞 3 · 访问量 648

猜你喜欢

转载自blog.csdn.net/qq_34677276/article/details/104505328