说我有3个字符串。然后还有1个字符串。
是否有算法可以让我找到前3个字符串中哪一个最匹配第4个字符串?
没有一个字符串是完全匹配的,我只是想找到最接近的匹配
如果算法已经存在于STL中,那就太好了。
提前致谢。
答案 0 :(得分:7)
您没有通过“匹配最多”来明确指出您的意思,因此我假设您没有精确的要求。在这种情况下,Levenshtein distance采用合理的指标。只需计算三个琴弦和第四个琴弦之间的Levenshtein距离,然后选择一个给出最小距离的琴弦。
答案 1 :(得分:1)
您可以实现Levenshtein Distance算法,它可以很好地衡量您拥有的两个字符串之间的匹配程度。它衡量您需要进行多少次击键才能将一个字符串转换为另一个字符串。您可以找到C ++实现here。
计算Levenshtein字符串#4与您拥有的三个字符串之间的距离。选择距离最小的字符串。
答案 2 :(得分:0)
在STL中没有任何准备,但你需要的是某种字符串度量。
Hello
vs Helol
。hello world
与world hello
。答案 3 :(得分:0)
您有近似字符串匹配问题。根据您要执行的匹配类型,您将使用不同的算法。有许多.. SOUNDEX,Jaro-Winkler,Levenstein Distance,metaphore ...等。关于STL,我不知道任何实现这些算法的函数,但你可以看看here使用c ++获取一些资源。另请注意,如果从数据库中获取字符串,则很可能您的数据库引擎实现了某些算法(很可能是SOUNDEX)。