在多个字符串中查找相似的单词(交集)

时间:2014-05-22 07:18:26

标签: java string

例如,

String a = "cat dog monkey";
String b = "cat cow monkey";
String c = "cat dog duck";

我想知道是否有任何快速有效的方法在Java中进行,以便找到多个字符串的交叉字,在这种情况下将是“cat”。

2 个答案:

答案 0 :(得分:7)

我将每个字符串拆分为一个数组,将其转换为Set并使用retainAll方法:

String a = "cat dog monkey";
String b = "cat cow monkey";
String c = "cat dog duck";

Set<String> aSet = new HashSet<>(Arrays.asList(a.split(" ")));
Set<String> bSet = new HashSet<>(Arrays.asList(a.split(" ")));
Set<String> cSet = new HashSet<>(Arrays.asList(a.split(" ")));

Set<String> result = new HashSet<>(aSet);
result.retainAll(bSet);
result.retainAll(cSet);

答案 1 :(得分:1)

  1. 如果你知道在字符串的开头存在单词,你可以使用方法 a.startsWith("cat")
  2. 如果您知道字符串末尾存在单词 您可以使用方法a.endsWith("cat")
  3. 如果它在字符串a.contains("cat")中的任何位置,但会区分大小写。
  4. 您也可以使用正则表达式,在任何地方找到它。
  5. 要找到交集,这是一个已经给出的代码示例

    [Intersection of two strings in Java