表情符号查找表和算法

时间:2017-05-08 22:52:37

标签: android algorithm emoji

我正在尝试构建一个用户可以输入字符串的Android应用程序,并显示与该字符串相关的列表表情符号。 (就像Venmo app一样)例如:

案例1:用户输入“pizz”,在列表中会出现“”,请注意用户输入“pizz”,而不是披萨! 案例2:用户输入“rabb”,在列表中会有“”和“”,请注意用户输入“rabb”,而不是兔子!

这个问题有什么好的数据结构和算法?

1 个答案:

答案 0 :(得分:3)

trie 就是你要找的东西。来自Wikipedia

  

一个trie,也称为数字树,有时候是基数树或前缀树(因为它们可以通过前缀搜索),是一种搜索树 - 一种有序的树数据结构......

trie类似于HashMap<K,V>,您可以使用键执行查找并获取值。不同之处在于您还可以通过前缀进行搜索。给定前缀,它将在结构中找到具有该前缀的所有键值对。它基本上是用于生成搜索建议的 数据结构。

一般理念:

Trie<String, String> t = new Trie<String, String>();
t.insert("pizza", "");
t.insert("rabbit1", "");
t.insert("rabbit2", "");
// then later...
t.findByPrefix("rabb"); // [,]

不幸的是,尝试过于通用,并且不存在于任何流行的数据结构库(例如Java Collections Framework或Google Guava)中。您必须自己实现一个或找到现有的实现并进行修改。 我建议:

  1. 学习理论。观看此video。 YouTube上还有更多内容可以教你基础知识。您还可以搜索谷歌搜索&#34; N-way trie&#34;并阅读有关它的说明。
  2. 参加此课程TrieST并修改它。它与您的需求非常相似(或已经完美):http://algs4.cs.princeton.edu/52trie/TrieST.java.html具体参见keysWithPrefix方法。