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;
}
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;
}
相关文章推荐
- LCS算法找出两个字符串最长公共子串(C#实现)
- LCS算法实现 求两个字符串中间最长的公共子串
- lcs.py 最长公共子串算法
- LCS (Longest Common Subsequence) 字符串最长公共子串算法
- 算法设计 - LCS 最长公共子序列&&最长公共子串 &&LIS 最长递增子序列
- 动态规划算法求lcs(最长公共子串)之Java代码实现
- 算法实现-->最长公共子串
- 【实习记】2014-08-29算法学习Boyer-Moore和最长公共子串(LCS)
- 算法设计 - LCS 最长公共子序列&&最长公共子串 &&LIS 最长递增子序列
- 常考的经典算法--最长公共子序列(LCS)与最长公共子串(DP)
- LCS算法求最长公共子串
- 最长公共子串(LCS)与字符串匹配代码实现
- LCS算法求最长公共子串
- LCS 最长公共字串算法实现
- 算法导论第十五章---最长公共子串LCS代码实现
- 算法12—动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
- LCS/最长公共子串算法分析
- HDU 1503 Advanced Fruits 最长公共子串应用(LCS算法应用)
- 【算法之动态规划(三)】动态规划算法之:最长公共子序列 & 最长公共子串(LCS),字符串相似度算法
- 实用算法实现-第 8 篇 后缀树和后缀数组 [2 最长公共子串]