是否有人知道将匹配单个字符串与n
个字符串进行比较的最快方法?
例如:需要将单词“example”与包含n
个单词的列表进行比较,以进行匹配。该列表可以包含任意长度的任意数量的单词。
我可以使用特定的算法来执行此操作吗?我知道在字符串中找到子字符串的字符串匹配算法,例如Boyer-Moore算法。但不是这个。请帮帮我。请注意,我将在Java中实现它。
答案 0 :(得分:3)
您可以使用contains
方法。
List<String> lstr = Arrays.asList(new String[]{"a", "b", "c", "d", "e"});
Collections.sort(lstr);
lstr.contains("c"); // true
lstr.contains("f"); // false
答案 1 :(得分:2)
运行循环直到列表末尾并使用 equals()方法比较每个元素
答案 2 :(得分:0)
您可以为列表准备Map<Int,List<String>>
,其中键是字符串的.hashcode()
,列表包含具有相同哈希码的所有字符串。
然后,您只需查找新字符串的哈希码,并对返回列表中的每个字符串运行equals()。
应该快得多,因为要比较的条目要少得多。请注意,准备工作需要一些时间,因此只有在您需要多次执行此操作时才能执行此操作。
答案 3 :(得分:0)
假设您只想检查完全匹配,那么您可以维护字典的哈希映射并查找单词的哈希值,也可以使用http://en.wikipedia.org/wiki/Trie之类的树,其中每个节点都是一个字母
与单词数量相比,两者的时间复杂度几乎是恒定的,而是取决于您正在查找的单词的长度(无关紧要)。