C++ 与最相似字符串的字符串比较

C++ 与最相似字符串的字符串比较,c++,c,algorithm,string,comparison,C++,C,Algorithm,String,Comparison,有人知道是否存在一种算法,该算法给定一个字符串A和一个字符串数组B,将A字符串与B中的所有字符串进行比较,并在输出中给出最相似的字符串 对于“最相似的一个”,我的意思是,例如 如果字符串是:“你好,世界,你好吗” 然后 “asdf asdewr你好,世界你好” 更类似于: “h2ll4 w1111 h11 111”通常的测量方法是。计算从原始字符串到每个候选字符串的Levenshtein距离,并将最小距离作为最可能的候选字符串。这通常是通过检查字符串的一系列变化来完成的。。。请看一看拼写纠正算法

有人知道是否存在一种算法,该算法给定一个字符串A和一个字符串数组B,将A字符串与B中的所有字符串进行比较,并在输出中给出最相似的字符串

对于“最相似的一个”,我的意思是,例如

如果字符串是:“你好,世界,你好吗”

然后

“asdf asdewr你好,世界你好”

更类似于:


“h2ll4 w1111 h11 111”

通常的测量方法是。计算从原始字符串到每个候选字符串的Levenshtein距离,并将最小距离作为最可能的候选字符串。

这通常是通过检查字符串的一系列变化来完成的。。。请看一看拼写纠正算法,例如定义相似性。可以做到这一点的算法包括:

  • Levenshtein/LCS/n-gram距离(将字符串与集合中的每个字符串进行比较,选择距离最小的字符串)
  • tf-idf索引

  • 所有这些都可以在C或C++中实现。谷歌“字符串相似性”、“重复查找”或“记录链接”以获取可用的度量和算法。

    这里有一个方便的链接,可以链接到关于Levenshtein距离的信息。谢谢你们,你们真的很有用。我想在开始选择算法之前,最好以适当的方式定义相似性,你们是对的。干杯既然你似乎对答案很满意,你现在可以接受其中一个。