【问题标题】:How can I check STRING SIMILARITY in C++? [closed]如何检查 C++ 中的字符串相似性? [关闭]
【发布时间】:2014-08-13 23:41:22
【问题描述】:

假设我有 2 个字符串:

string1 = "abcdef"

string2 = "12abcdef21"

我正在寻找一段代码来分析这两个字符串并给出它们相似程度的百分比(使用字符数)。类似的部分是“abcdef”,因此是匹配的字符串的连续部分,而不是单个字符。

提前致谢。

编辑:

我真正想做的是找到重复的文件。 我有两个大小相同的文件,我想检查它们是否也有相似的名称。 有什么想法可以做到吗?

【问题讨论】:

  • 网上必须有可用的算法。例如,this page 看起来很相关。
  • en.cppreference.com/w/cpp/string/basic_string/findThat's one of my always accessible browser tabs。在那里查找通常比在 SO 上写一个(有效的)问题要快。
  • @qla_alp 你的意思是关于相似度的两个字符串的最大公共子字符串吗?
  • 感谢大家的回复。我会查看链接,看看是否找到可以使用的东西。
  • @VladfromMoscow 是的,找到最大的公共子字符串,然后将其大小除以我要检查的字符串的大小。

标签: c++ string string-matching


【解决方案1】:

您可以采用多种不同的方法,以及多种成熟的算法。

要更多地通过发音而不是拼写来比较单词,您可以尝试使用 Soundex algoright (Phonetic String Comparison with Soundex) 的变体。

要根据字符的相似程度对单词进行评分,您可以查看 (Approximate String Comparisons Using Levenshtein Distance)。

注意:两篇文章都包含 C# 代码,但方法在 C++ 中是相同的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多