拼写检查器的C#LevenshteInstance算法
嗨,我正在使用levenshtein算法来计算两个字符串之间的差异,使用下面的代码。它目前提供了从“答案”到“目标”所需的更改总数,但我想将这些更改分为正在发生的错误类型。因此,将错误分类为删除、替换或插入 我尝试添加一个简单的计数,但我对这方面还不太熟悉,不太了解代码是如何工作的,所以不知道如何进行拼写检查器的C#LevenshteInstance算法,c#,levenshtein-distance,C#,Levenshtein Distance,嗨,我正在使用levenshtein算法来计算两个字符串之间的差异,使用下面的代码。它目前提供了从“答案”到“目标”所需的更改总数,但我想将这些更改分为正在发生的错误类型。因此,将错误分类为删除、替换或插入 我尝试添加一个简单的计数,但我对这方面还不太熟悉,不太了解代码是如何工作的,所以不知道如何进行 static class LevenshteinDistance { /// <summary> /// Compute the distanc
static class LevenshteinDistance
{
/// <summary>
/// Compute the distance between two strings.
/// </summary>
public static int Compute(string s, string t)
{
int n = s.Length;
int m = t.Length;
int[,] d = new int[n + 1, m + 1];
// Step 1
if (n == 0)
{
return m;
}
if (m == 0)
{
return n;
}
// Step 2
for (int i = 0; i <= n; d[i, 0] = i++)
{
}
for (int j = 0; j <= m; d[0, j] = j++)
{
}
// Step 3
for (int i = 1; i <= n; i++)
{
//Step 4
for (int j = 1; j <= m; j++)
{
// Step 5
int cost = (t[j - 1] == s[i - 1]) ? 0 : 1;
// Step 6
d[i, j] = Math.Min(
Math.Min(d[i - 1, j] + 1, d[i, j - 1] + 1),
d[i - 1, j - 1] + cost);
}
}
// Step 7
return d[n, m];
}
}
静态类levenshteindication
{
///
///计算两个字符串之间的距离。
///
公共静态整数计算(字符串s、字符串t)
{
int n=s.长度;
int m=t.长度;
int[,]d=新的int[n+1,m+1];
//第一步
如果(n==0)
{
返回m;
}
如果(m==0)
{
返回n;
}
//步骤2
对于(int i=0;我在google上查找算法本身,以便您更好地识别步骤、它们是什么以及它们如何工作……然后将3个整数计数器保留在循环之外(全局变量或引用参数)。根据需要,在每个步骤增加适当的计数器。此外,从外观上看,您需要重新编写算法,以便在分配成本部分时,您能够确定您正在执行的操作。一般来说,算法本身并不关心步骤本身,只需要你的算法计算Levenshtein矩阵。为了计算矩阵中的运算顺序,请看这个问题。嗨,我花了几个小时来查找评论,我不知道在哪里。我搜索了google和t的实现每次我看到这个算法时,它看起来都不一样。内文,我理解你的意思,我想。我设置了3个变量来递增,但它剖析了代码,所以我知道每个变量的去向,这也是我仍在努力的方向。如果有人有任何想法,我将不胜感激!