2017-05-08 47 views
0

我想构建一个android应用程序,用户可以输入一个字符串,并且与该字符串相关的列表表情符号会显示出来。 (就像Venmo应用程序)例如:表情符号查找表格和算法

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

这个问题会是一个很好的数据结构和算法吗?

回答

3

A trie是你在找什么。从Wikipedia

特里树,也叫数字树,有时基数树或前缀树(因为他们可以通过前缀搜索),是一种搜索树的有序树数据结构的..

一个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集合框架或谷歌番石榴,例如)。你必须自己实现一个或找到一个现有的实现并修改它。 我推荐:

  1. 学习理论。观看这个video。 YouTube上还有很多内容会教你如何使用基础知识。你也可以在谷歌上搜索“N-way trie”并阅读关于它的注释。
  2. 以此类TrieST并修改它。它与你所需要的非常相似(或已经完美):http://algs4.cs.princeton.edu/52trie/TrieST.java.html具体参见keysWithPrefix方法。