表情符号查找 table 和算法
emoji look up table and algorithm
我正在尝试构建一个 android 应用程序,用户可以输入一个字符串,然后会显示与该字符串相关的表情符号列表。 (就像 Venmo 应用程序一样)例如:
情况一:用户输入"pizz",列表中会有“”,注意用户输入的是"pizz",不是pizza!
情况2:用户输入"rabb",列表中会有“”和“”,注意用户输入的是"rabb",不是rabbit!
对于这个问题,什么是好的数据结构和算法?
A trie 就是您要找的。来自 Wikipedia
A trie, also called digital tree and sometimes radix tree or prefix tree (as they can be searched by prefixes), is a kind of search tree—an ordered tree data structure ...
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)。您必须自己实施一个或找到现有的实施并修改它。
我建议:
- 学习理论。观看这个 video。 YouTube 上还有更多内容可以教您基础知识。您还可以在 google 中搜索 "N-way trie" 并阅读相关注释。
- 采用此 class
TrieST
并对其进行修改。它与您所需要的非常相似(或者已经很完美):http://algs4.cs.princeton.edu/52trie/TrieST.java.html具体参见keysWithPrefix
方法。
我正在尝试构建一个 android 应用程序,用户可以输入一个字符串,然后会显示与该字符串相关的表情符号列表。 (就像 Venmo 应用程序一样)例如:
情况一:用户输入"pizz",列表中会有“”,注意用户输入的是"pizz",不是pizza! 情况2:用户输入"rabb",列表中会有“”和“”,注意用户输入的是"rabb",不是rabbit!
对于这个问题,什么是好的数据结构和算法?
A trie 就是您要找的。来自 Wikipedia
A trie, also called digital tree and sometimes radix tree or prefix tree (as they can be searched by prefixes), is a kind of search tree—an ordered tree data structure ...
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)。您必须自己实施一个或找到现有的实施并修改它。 我建议:
- 学习理论。观看这个 video。 YouTube 上还有更多内容可以教您基础知识。您还可以在 google 中搜索 "N-way trie" 并阅读相关注释。
- 采用此 class
TrieST
并对其进行修改。它与您所需要的非常相似(或者已经很完美):http://algs4.cs.princeton.edu/52trie/TrieST.java.html具体参见keysWithPrefix
方法。