我有一个输入字符串和一个字符串集合,我想比较输入字符串并找到最佳选择。我想写一个函数,告诉我这两个字符串有多大相似。你有什么想法吗? ?
答案 0 :(得分:10)
对于“短”字符串差异,您要搜索的算法称为:
Levenshtein距离
http://en.wikipedia.org/wiki/Levenshtein_distance
为了寻求句子差异,您可能希望检查解决“longest common sequence”问题的算法。
这样做的一个工具是(原来是unix)'diff'
答案 1 :(得分:1)
好吧,Perl有一个String :: Approx函数,它似乎适合你。但总的来说,您可能需要查看:Levenshtein Distance algorithm。
其他一些好资源(主要在C#中解释):
Comparing strings with tolerance
http://mihkeltt.blogspot.com/2009/04/dameraulevenshtein-distance.html
http://www.perlmonks.org/?node=Levenshtein%20distance%3A%20calculating%20similarity%20of%20strings
http://www.dotnetperls.com/levenshtein