【问题标题】:Algorithm to compare one array of strings to many array of strings将一个字符串数组与多个字符串数组进行比较的算法
【发布时间】:2014-07-22 18:33:24
【问题描述】:

在我正在进行的当前项目中,我有点卡在这个问题上:

我想取一个ArrayList<String>(称之为A)并将其与ma​​ny ArrayList<String>进行比较,记下这些数组比较中有多少字符串匹配.然后,我想按照与 A 最相似到最不相似的顺序对多个字符串数组进行排序。

有没有人知道任何快速算法可以做到这一点?与其寻找算法不如寻找代码,但我正在使用 Java。

谢谢!

【问题讨论】:

  • 票数接近的原因是什么?这是如何“要求我们推荐或查找工具、库或最喜欢的场外资源”?
  • 您可能会以几种不同的方式使用哈希值。 (实际上,这个问题是骗人的——它可能每 2 周被问一次。)
  • 哎呀,抱歉重复了!找不到问题,但我可能没有找对地方。感谢您的帮助!
  • 是的,我懒得去查那个骗子,所以别担心。

标签: java arrays string algorithm


【解决方案1】:

我的建议:

  1. 首先将引用ArrayList的所有Strings放入一个Set中。
  2. 检查每个其他 ArrayList 的所有成员,并使用 set.contains(string) 找出每个数组列表包含多少匹配项。
  3. 对于每个 ArrayList,除了该 ArrayList 的匹配数之外,创建一个包装 ArrayList 的对象。
  4. 最后,根据匹配的数量对这些包装对象进行排序。

【讨论】:

  • 并使包装ArrayList + 匹配计数的对象实现Comparable 以便能够对它们进行排序。
【解决方案2】:

如果您想比较字符串之间的相似性(或差异),请尝试编辑距离算法,例如 Levenshtein 距离算法。

http://en.wikipedia.org/w/index.php?title=Levenshtein_distance

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 2014-08-01
    • 2020-09-03
    • 2016-10-17
    • 1970-01-01
    相关资源
    最近更新 更多