我想使用Levenshtein算法搜索字符串列表。我想实现自定义字符映射,以便键入拉丁字符并在希腊语中搜索项目。
映射示例:
a = α, ά
b = β
i = ι,ί,ΐ,ϊ
... (etc)
u = ου, ού
所以使用
在列表中使用abu
进行搜索
将导致列表中的所有项目。 (项目顺序不是问题)
如何在算法中应用映射? (this是我开始的地方)
答案 0 :(得分:7)
我认为最好的方法是将符号预处理为一种明确的形式(例如拉丁语中的所有符号)然后像正常情况那样使用Levenshtein。
在伪代码中:
int func(String latinStr, String greekStr) {
String mappedStr = convertToLatin(greekStr); // e.g. now αβ would be ab
return Levenstein(latinStr, mappedStr);
}
在convertToLatin
中你可以用符号逐个字符地用字母表来寻找替换并构造新的字符串