【发布时间】:2017-12-05 13:07:25
【问题描述】:
我的问题是我们希望我们的用户输入这样的代码:
639195-EM-66-XA-53-WX 在输入中的某处,因此结果可能如下所示:The code is 639195-EM-66-XA-53-WX, let me in。如果它们在代码中出现小错误(Levenshtein 距离为 1),我们仍然希望匹配字符串。例如The code is 739195-EM-66-XA-53-WX, let me in。 (代码首字母6改成7)
即使用户跳过破折号,算法也应该匹配,并且它应该忽略小写/大写字母。这些要求很容易满足,因为我可以删除所有破折号并执行 to_uppercase。
有类似的算法吗?
生成与原始代码距离为 1 的所有字符串的计算成本很高。
我也在考虑使用 Levenshtein distance 之类的东西,但忽略用户在第二个字符串中添加的缺失字母,但这会导致代码中间出现错误的字母。
在用户输入中搜索代码似乎好一点,但仍然不是很干净。
【问题讨论】:
-
那么你知道代码前后的字母或单词,即输入代码之前的句子吗?两个字符串之间的最大 Levenshtein 距离为 1 很容易高效地实现 O(n)。
-
不,我不知道前后的字母。我会在问题中说清楚。
标签: algorithm string-matching levenshtein-distance