java - Java 8 - 如何在列表中找到最接近的名称
问题描述
我正在使用java 8,我正在尝试实现一种算法来尝试在列表中找到正确的名称,或者最接近的名称。
例如 :
**Name**
Smith Johnson Williams Brown
**Lists of names**
Johnson
Johnson Williams Brown
Smith Johnson Brown Williams
Smith Johnson
Smith Williams Brown Johnson
在这种情况下,由于字符串的顺序,算法必须返回“Smith Johnson Brown Williams”。
当然,如果我们将“Smith Johnson Williams Brown”添加到名称列表中,它只会返回这个名称,但如果它不存在,我们必须返回与订单最接近的名称。
有人可以帮忙吗?
谢谢你。
解决方案
Levenshtein 算法允许您比较两个字符串之间的相似性,返回一个整数。Levenshtein 计算将一个字符串转换为另一个字符串所需的编辑次数(插入、删除或替换)。
另一个有用的算法是Jaro-Winkler 算法。
更多细节:Jaro-Winkler 和 Levenshtein 距离之间的区别?
您还可以在互联网上用 java 找到这些算法的一些实现。
推荐阅读
- android - 如何在android中的R.plurals.cats的文本视图中以粗体设置数量文本
- javascript - eval() 返回一个空值
- telegram - 如何处理 Telegram bot API 中错过的测验答案?
- multithreading - Keras/tensorflow 细粒度多线程控制
- reactjs - 加载路径时的回调或 setState
- docker - 用于网络应用程序开发的 Docker 设置
- google-people-api - 从 google people api 获取用户的电话号码?
- wpf - 将应用程序迁移到 .NET Core 3.1 后,WPF WebBrowser 自定义右键菜单停止工作
- sql - 长时间运行的查询sql
- javascript - 无法在Javascript fetch中提取for循环内的数据