相同长度字符串的最佳方法字符串匹配算法?

时间:2009-12-07 16:20:31

标签: algorithm string-matching

我需要实现字符串匹配算法来确定哪些字符串最匹配。我看到汉明距离是一个很好的匹配算法,当这个固定长度可以获得。

如果我使用Levenshtein距离公式,匹配质量是否有任何优势?我知道这种方法效率较低,因为它考虑了可变长度的字符串,但我真正关心的是匹配的质量。另外,有没有更好的算法我可能要考虑?如果这有任何不同,我在Java工作。

http://en.wikipedia.org/wiki/Levenshtein_distance

http://en.wikipedia.org/wiki/Hamming_distance

非常感谢

2 个答案:

答案 0 :(得分:3)

考虑字符串:“abcdefg”和“bcdefgh”。

Levenshtein距离为2.汉明距离(对字符而不是位进行操作)为7。

所以这取决于你是否想要将这些字符串视为相似或不相似。汉明距离有其适当的用途,但“这些字符串看起来与人类相似吗?”不是其中之一。

答案 1 :(得分:1)

您可能会对Bitap algorithm.

感兴趣
  

bitap算法(也称为   转移 - 或转移 - 或   Baeza-Yates-Gonnet算法)是一个   模糊字符串搜索算法。该   算法告诉是否给定文本   包含一个子字符串   给定的“大致相等”   模式,近似相等   根据Levenshtein的定义   距离 - 如果子串和   模式在给定距离k内   彼此,然后算法   认为他们是平等的算法   首先是预先计算一组   每个包含一位的位掩码   模式的元素。然后就是   能够完成大部分工作   按位运算,即   非常快。