java - 文本相似度搜索算法
问题描述
说我有 String x= "algorithm"
和 Stringy= "mgth"
Stringx
包含 String 中的所有字母y
,我可以将 String 拆分y
成一个字母列表,然后循环遍历该列表以查看 String 是否x
包含字母y[index]
, 但我想知道是否有更有效的方法
编辑:
在 kotlin 中有一个简单的 intersect 函数,例如:
val x="algorithm".toList()
val y="mgth".toList()
val interesct=x.intersect(y) //returns a Set of matching chars
if (y.size == interesct.size){
println("match")
}
解决方案
有一种更有效的方法是使用Set
.
String x = "algorithm";
String y = "mgth";
Set<Character> set = new HashSet<>();
for(char c: y.toCharArray())
set.add(c);
for(char c: x.toCharArray())
set.remove(c);
if(set.size() == 0)
System.out.println("X contains Y");
else
System.out.println("X does not contain Y");
上面的代码所做的是将较小的字符添加String
到集合中。然后,它会删除较大的String
.
如果 中有任何剩余字符Set
,则意味着较小的String
包含一个不在较大的字母String
。
推荐阅读
- java - 对于持久底页,如何实现从展开状态到半展开状态的手势(向下滑动)?
- python - 从另一台计算机运行 python 脚本而不安装包/设置环境?
- javascript - 当 React 中的上下文发生变化时获取数据
- google-sheets - 如何在 Google 表格中自动将一行拆分为不同的行?
- c# - 两个请求来时的同步问题
- python - 尝试从导入的脚本导入脚本时出现“ModuleNotFoundError”
- javascript - 如何用短路编码 if 语句
- google-api - 在 Python 中使用 google API 和 OAUTH2 获取用户信息时出错
- mongodb - 连接到 Mongo DB 的 Masstransit Saga 类中的异常
- c# - 为什么没有 await 关键字以下代码无法运行?