如何使用 Levenshtein 距离作为标准对列表进行排序?
How can I sort a list using the Levenshtein distance as criterion?
我正在尝试在 window 中显示多个字符串。在将它们添加到列表之前,我已经计算了所有这些字符串的 Levenshtein 距离。
现在,我想从距离最短的字符串开始对列表进行排序。有没有办法不使用第二个列表?我正在使用 VB.NET.
谢谢
您可以将自定义比较方法传递给列表排序方法。
语法如下所示,其中 "YourComparer" 是一个用于比较两个字符串的函数,"list" 是一个字符串列表。
list.Sort(Function(s1, s2) YourComparer(s1, s2))
"YourComparer" 应该 return 给定两个字符串的整数值,指示第一个字符串应该在第二个之前、之后还是与第二个相同的位置。
下面是一个示例实现。
Private Function YourComparer(ByVal s1 As String, ByVal s2 As String) As Integer
' **** compare using your own implementation ****
' return less than zero if s1 should preceed s2
' return zero if s1 has same position in sort order
' return greater than zero if s1 should follow s2
' EXAMPLE using the length of strings to determine sort order
' Replace section with your own implementation
If (s1.Length = s2.Length) Then Return 0 ' same position
If (s1.Length > s2.Length) Then Return -1 ' should come before
Return 1 ' should come after
End Function
我正在尝试在 window 中显示多个字符串。在将它们添加到列表之前,我已经计算了所有这些字符串的 Levenshtein 距离。
现在,我想从距离最短的字符串开始对列表进行排序。有没有办法不使用第二个列表?我正在使用 VB.NET.
谢谢
您可以将自定义比较方法传递给列表排序方法。
语法如下所示,其中 "YourComparer" 是一个用于比较两个字符串的函数,"list" 是一个字符串列表。
list.Sort(Function(s1, s2) YourComparer(s1, s2))
"YourComparer" 应该 return 给定两个字符串的整数值,指示第一个字符串应该在第二个之前、之后还是与第二个相同的位置。
下面是一个示例实现。
Private Function YourComparer(ByVal s1 As String, ByVal s2 As String) As Integer
' **** compare using your own implementation ****
' return less than zero if s1 should preceed s2
' return zero if s1 has same position in sort order
' return greater than zero if s1 should follow s2
' EXAMPLE using the length of strings to determine sort order
' Replace section with your own implementation
If (s1.Length = s2.Length) Then Return 0 ' same position
If (s1.Length > s2.Length) Then Return -1 ' should come before
Return 1 ' should come after
End Function