登山者的仰望

不仅要走好脚下的每一步,也要仰望山顶
LCS 最长公共子串算法实现 C#
返回最长串长度     

   public static int lcs(ref string str1, ref string str2)
        {
            if (str1 == str2)
                return str1.Length;
            int[] maxtix = new int[str1.Length];
            int maxLength = 0;
            int startNum = 0;
            int str1Num = str1.Length;
            int str2Num = str2.Length;
            if ((String.IsNullOrEmpty(str1)) || (String.IsNullOrEmpty(str2)))
            {
                //return String.Empty;
                return 0;
            }
            for (int i = 0; i < str2Num; i++)
            {
                for (int j = str1Num - 1; j >= 0; j = j - 1)
                {
                    if (str2[i] == str1[j])
                    {
                        if ((i == 0) || (j == 0))
                        {
                            maxtix[j] = 1;
                        }
                        else
                        {
                            maxtix[j] = maxtix[j - 1] + 1;
                        }
                    }
                    else
                    {
                        maxtix[j] = 0;
                    }
                    if (maxtix[j] > maxLength)
                    {
                        maxLength = maxtix[j];
                        startNum = j;
                    }
                }
            }
            if (maxLength == 0)
            {
                //return String.Empty;
                return 0;
            }
            //return str1.Substring(startNum - maxLength + 1, maxLength);
            return maxLength;
        }

posted on 2008-05-17 11:28  光光GG  阅读(1345)  评论(1)    收藏  举报