leetcode208. 实现 Trie (前缀树)

举报
兔老大 发表于 2021/04/23 00:01:18 2021/04/23
【摘要】 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。 示例: Trie trie = new Trie(); trie.insert("apple"); trie.search("apple");   // 返回 true trie.search("app"); &...

实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。

示例:

Trie trie = new Trie();

trie.insert("apple");
trie.search("apple");   // 返回 true
trie.search("app");     // 返回 false
trie.startsWith("app"); // 返回 true
trie.insert("app");   
trie.search("app");     // 返回 true
说明:

你可以假设所有的输入都是由小写字母 a-z 构成的。
保证所有输入均为非空字符串。

前缀树介绍


  
  1. public class Trie {
  2. private boolean is_string=false;
  3. private Trie next[]=new Trie[26];
  4. public Trie(){}
  5. public void insert(String word){//插入单词
  6. Trie root=this;
  7. char w[]=word.toCharArray();
  8. for(int i=0;i<w.length;++i){
  9. if(root.next[w[i]-'a']==null)root.next[w[i]-'a']=new Trie();
  10. root=root.next[w[i]-'a'];
  11. }
  12. root.is_string=true;
  13. }
  14. public boolean search(String word){//查找单词
  15. Trie root=this;
  16. char w[]=word.toCharArray();
  17. for(int i=0;i<w.length;++i){
  18. if(root.next[w[i]-'a']==null)return false;
  19. root=root.next[w[i]-'a'];
  20. }
  21. return root.is_string;
  22. }
  23. public boolean startsWith(String prefix){//查找前缀
  24. Trie root=this;
  25. char p[]=prefix.toCharArray();
  26. for(int i=0;i<p.length;++i){
  27. if(root.next[p[i]-'a']==null)return false;
  28. root=root.next[p[i]-'a'];
  29. }
  30. return true;
  31. }
  32. }

 

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/104177206

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。