题目大意:

略。

分析:

字典树模板.

代码如下:

1 class Trie {

2 public:

3 int passed; // 记录经过这个节点的字符串数量

4 int ends; // 记录有多少个字符串以这个节点结尾

5 unordered_map< char, Trie* > nxt;

6

7 /** Initialize your data structure here. */

8 Trie() {

9 passed = 0;

10 ends = 0;

11 }

12

13 /** Inserts a word into the trie. */

14 void insert(string word) {

15 Trie* p = this;

16 for(int i = 0; i < word.size(); ++i) {

17 if(p->nxt.find(word[i]) == p->nxt.end()) {

18 p->nxt[word[i]] = new Trie();

19 }

20 ++p->passed;

21 p = p->nxt[word[i]];

22 }

23 ++p->ends;

24 }

25

26 /** Returns if the word is in the trie. */

27 bool search(string word) {

28 Trie* p = this;

29 for(int i = 0; i < word.size(); ++i) {

30 if(p->nxt.find(word[i]) == p->nxt.end()) return false;

31 p = p->nxt[word[i]];

32 }

33 return p->ends != 0;

34 }

35

36 /** Returns if there is any word in the trie that starts with the given prefix. */

37 bool startsWith(string prefix) {

38 Trie* p = this;

39 for(int i = 0; i < prefix.size(); ++i) {

40 if(p->nxt.find(prefix[i]) == p->nxt.end()) return false;

41 p = p->nxt[prefix[i]];

42 }

43 return true;

44 }

45 };

46

47 /**

48 * Your Trie object will be instantiated and called as such:

49 * Trie* obj = new Trie();

50 * obj->insert(word);

51 * bool param_2 = obj->search(word);

52 * bool param_3 = obj->startsWith(prefix);

53 */

View Code

来源:https://www.cnblogs.com/zaq19970105/p/11457612.html

leetcode前缀树java_LeetCode 实现 Trie (前缀树)相关推荐

  1. leetcode前缀树java_Java实现 LeetCode 208 实现 Trie (前缀树)

    208. 实现 Trie (前缀树) 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作. 示例: Trie trie = new Trie() ...

  2. 数据结构与算法(十一)Trie字典树

    本文主要包括以下内容: Trie字典树的基本概念 Trie字典树的基本操作 插入 查找 前缀查询 删除 基于链表的Trie字典树 基于Trie的Set性能对比 LeetCode相关线段树的问题 Lee ...

  3. leetcode 676. Implement Magic Dictionary | 676. 实现一个魔法字典(DFS+Trie 前缀树)

    题目 https://leetcode.com/problems/implement-magic-dictionary/description/ 题解 题意理解 前缀树问题,大意是是让你在字典中找到是 ...

  4. leetcode 677. Map Sum Pairs | 677. 键值映射(Trie前缀树,BFS)

    题目 https://leetcode.com/problems/map-sum-pairs/ 题解 基于前缀树实现,可以参考:leetcode 208. Implement Trie (Prefix ...

  5. 【LeetCode】【HOT】208. 实现 Trie (前缀树)

    [LeetCode][HOT]208. 实现 Trie (前缀树) 文章目录 [LeetCode][HOT]208. 实现 Trie (前缀树) package hot;public class So ...

  6. Leetcode 208.实现 Trie (前缀树)(Implement Trie (Prefix Tree))

    Leetcode 208.实现 Trie (前缀树) 1 题目描述(Leetcode题目链接)   实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三 ...

  7. LeetCode 208. 实现 Trie (前缀树) —— 提供一套前缀树模板

    208. 实现 Trie (前缀树) Ideas 前缀树嘛,直接套模板咯,把之前写的拿过来抄一遍. 提供一下我的模板. Code Python class TrieNode:def __init__( ...

  8. Leetcode —— 208. 实现 Trie (前缀树)(Python)

    实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作. 示例: Trie trie = new Trie();trie.insert(" ...

  9. Leetcode典型题解答和分析、归纳和汇总——T208(实现Trie前缀树)

    问题描述: 实现一个Trie前缀树,包含insert.search和startsWith这三个操作. 问题分析: 这类的题目与堆栈的最小元素查找类似,将所有功能进行集中处理. 首先我们需要明确一下tr ...

最新文章

  1. python安装pillow模块错误
  2. SAP HANA简介
  3. mysql 重复率高字段 索引_MySQL性能优化(二)索引优化
  4. iOS中js与objective-c的交互(转)
  5. ExtJS入门(01)部署介绍
  6. 交叉线和直通线各自用于什么场合?为什么?_【小麓讲堂】偏振光与LCD、OLED、3D、AR到底有什么关系?...
  7. 结合人脸识别元辅助学习的AU单元检测
  8. LINQ聚合算法解释
  9. 最小二乘法详解(线性拟合与非线性拟合)
  10. 开博第一篇,附上我开通博客的理由
  11. HTTP session的原理
  12. java 取模运算_JAVA算术运算符_四则与取模
  13. EEGLAB的下载与安装
  14. C++中typedef用法说明
  15. 基于matlab的运动目标检测
  16. 的概念产生于计算机芯片,是指采用光导原位合成或微量点样等方法,,微阵列芯片...
  17. unity3D学习笔记1
  18. 第一周挑战2:税后工资计算器
  19. 20160808某公司嵌入式面试总结(加个人答案)
  20. CentOS7.6-搭建SFTP服务

热门文章

  1. 86岁还在录网课:MIT教授Gilbert Strang最新「线性代数」课程上线
  2. 速览!CVPR 2020 最新论文
  3. 神经网络“天生”就会驾驶虚拟赛车
  4. 谷歌力作:神经网络训练中的Batch依赖性很烦?那就消了它!
  5. 每年“骗”马云10亿,被骂大忽悠,他却当选中国工程院院士?
  6. Scrapy_redis框架原理分析并实现断点续爬以及分布式爬虫
  7. 2007年下半年 网络工程师 上下午试卷【附带答案】
  8. 计算机网络_NAT与NAPT
  9. 链表问题11——两个单链表相交的系列问题(二):找到两个无环链表的交点
  10. intellij idea中去除@Autowired注入对象的红色波浪线提示