Levenshtein距离数千个类似的加密货币列表

时间:2018-04-02 13:45:56

标签: c# arrays levenshtein-distance querying

我有一个按字母顺序排列的超过一千种不同加密货币的清单。问题在于,如果用户查询,例如“BTC”,他们将从列表中获得BTCA(Bitair),因为这是在比特币之前。或者,输入比特币会给你“AntiBitcoin”,因为它来自比特币之前。最初,这是因为我使用了.Contains()这是不正确的,所以现在我转而使用Levenshtein进行清除。

我正在建立一个这样的简单循环:

foreach (String s in crypto.currencies)
{
    if (Crypto.LevenshteinDistance(s,currency) <= (Stuck on the right way to do this now))
    {
        //foo
    }
    Console.WriteLine(s + " is not a match. Continuing.");
}

但是我非常坚持我应该如何获得用户想要的正确项目。它似乎完全愚蠢,我正在尝试做什么,但我必须通过这个列表正确查询(另外,我已经手动输入,ouch)

1 个答案:

答案 0 :(得分:1)

您可以在目标货币的Levenshtein距离上订购列表,然后选择最上面的一个:

var closestMatch = crypto.currencies
    .OrderBy(s => Crypto.LevenshteinDistance(s, currency))
    .First();