首页 > 解决方案 > 文本相似度搜索算法

问题描述

说我有 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")
}

标签: java

解决方案


有一种更有效的方法是使用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


推荐阅读