您的位置:首页 > 编程语言 > C#

LCS 最长公共子串算法实现 C#

2008-05-17 11:28 423 查看
返回最长串长度

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: