public static int EditDistance(string string1, string string2) { var s1Length = string1.Length; var s2Length = string2.Length; var matrix = new int[s1Length + 1, s2Length + 1];
for (int i = 0; i <= s1Length; i++) matrix[i, 0] = i; for (int j = 0; j <= s2Length; j++) matrix[0, j] = j;
for (int i = 1; i <= s1Length; i++) { for (int j = 1; j <= s2Length; j++) { int cost = (string2[j - 1] == string1[i - 1]) ? 0 : 1;
{
var s1Length = string1.Length;
var s2Length = string2.Length;
var matrix = new int[s1Length + 1, s2Length + 1];
for (int i = 0; i <= s1Length; i++)
matrix[i, 0] = i;
for (int j = 0; j <= s2Length; j++)
matrix[0, j] = j;
for (int i = 1; i <= s1Length; i++)
{
for (int j = 1; j <= s2Length; j++)
{
int cost = (string2[j - 1] == string1[i - 1]) ? 0 : 1;
matrix[i, j] = (new[] { matrix[i - 1, j] + 1,
matrix[i, j - 1] + 1,
matrix[i - 1, j - 1] + cost}).Min();
if ((i > 1) && (j > 1) &&
(string1[i - 1] == string2[j - 2]) &&
(string1[i - 2] == string2[j - 1]))
{
matrix[i, j] = Math.Min(
matrix[i, j],
matrix[i - 2, j - 2] + cost);
}
}
}
return matrix[s1Length, s2Length];
}如果用这段代码,效率太低下。
string temp = "2009N 009001 6 1 1 7332814.0000 3591433.0000 10124742.0000";
string temp1 = "2009N 009001 6 1 1 7332814.0000 3591433.0000 10124742.0000";
if (!temp.Equals(temp1))
{
//为不同的项;
}如果文件太大,你可以安行读取;