簡體   English   中英

如何使用 Levenshtein 距離作為標准對列表進行排序?

[英]How can I sort a list using the Levenshtein distance as criterion?

我試圖在 window 中顯示幾個字符串。 在將它們添加到列表之前,我已經計算了所有這些字符串的 Levenshtein 距離。

現在,我想以最短距離的字符串開頭對列表進行排序。 有沒有辦法不使用第二個列表? 我正在使用 VB.NET。

謝謝

您可以將自定義比較方法傳遞給列表排序方法。

語法如下所示,其中“YourComparer”是 function,您的實現用於比較兩個字符串,“list”是字符串列表。

list.Sort(Function(s1, s2) YourComparer(s1, s2))

給定兩個字符串,“YourComparer”應該返回一個 integer 值,指示第一個字符串應該在第二個字符串之前、之后還是具有相同的 position。

下面是一個示例實現。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM