211. 添加与搜索单词 - 数据结构设计

题目描述:请你设计一个数据结构,支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配 。

实现词典类 WordDictionary :

WordDictionary() 初始化词典对象
void addWord(word) 将 word 添加到数据结构中,之后可以对它进行匹配
bool search(word) 如果数据结构中存在字符串与 word 匹配,则返回 true ;否则,返回 false 。word 中可能包含一些 ‘.’ ,每个 . 都可以表示任何一个字母。

考察重点:同207,在基础上增加通配符’.’ (只需要对通配符节点遍历其26个子节点即可)

type WordDictionary struct {Next    []*WordDictionaryEndflag bool
}func Constructor3() WordDictionary {return WordDictionary{Next: make([]*WordDictionary, 26), Endflag: false}
}func (wd *WordDictionary) AddWord(word string) {for i := 0; i < len(word); i++ {if wd.Next[word[i]-'a'] == nil {temp := Constructor3()wd.Next[word[i]-'a'] = &temp}wd = wd.Next[word[i]-'a']}wd.Endflag = true
}func (wd *WordDictionary) Search(word string) bool {for i := 0; i < len(word); i++ {// fmt.Println(word[i])if word[i] == 46 { //这里比207要多一步,用来判断作为通配符的'.'的特殊情况for j := 0; j < 26; j++ { //遍历26个子节点,只要有一个可以完成search,则返回trueif wd.Next[j] != nil && wd.Next[j].Search(word[i+1:]) { //用子节点和剩余字符串完成余下的searchreturn true}}return false}if wd.Next[word[i]-'a'] == nil {return false}wd = wd.Next[word[i]-'a']}return wd.Endflag
}

LeetCode—211. 添加与搜索单词 - 数据结构设计相关推荐

  1. Java实现 LeetCode 211 添加与搜索单词 - 数据结构设计

    211. 添加与搜索单词 - 数据结构设计 设计一个支持以下两种操作的数据结构: void addWord(word) bool search(word) search(word) 可以搜索文字或正则 ...

  2. Leetcode 211. 添加与搜索单词 - 数据结构设计 解题思路及C++实现

    解题思路: 用字典树来作为存储的数据结构. 新增单词的时候,就使用字典树插入新单词的方法,与LeetCode 208 题一样. 在查找某一个字典树时,使用深度优先搜索即可. class WordDic ...

  3. LeetCode 211. 添加与搜索单词 - 数据结构设计(Trie树)

    1. 题目 设计一个支持以下两种操作的数据结构: void addWord(word) bool search(word) search(word) 可以搜索文字或正则表达式字符串,字符串只包含字母 ...

  4. [leetcode]211. 添加与搜索单词 - 数据结构设计 ---前缀树解法

    前缀树解法: struct TrieNode {bool isEnd;TrieNode *next[26];TrieNode(){isEnd = false;memset(next, NULL, si ...

  5. 211. 添加与搜索单词 - 数据结构设计

    211. 添加与搜索单词 - 数据结构设计 请你设计一个数据结构,支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配 . 实现词典类 WordDictionary : WordDictio ...

  6. leetcode 211. Design Add and Search Words Data Structure | 211. 添加与搜索单词 - 数据结构设计(Java)

    题目 https://leetcode.com/problems/design-add-and-search-words-data-structure/ 题解 字典树 + 深度优先搜素,思路参考 le ...

  7. 2022-9-18 Leetcode211.211. 添加与搜索单词 - 数据结构设计【前缀树】

    使用vector比较好,使用map会造成超时. struct Node {bool isWord;vector<Node*> next;Node():isWord(false) {next ...

  8. LeetCode 170. 两数之和 III - 数据结构设计(哈希map)

    文章目录 1. 题目 2. 解题 1. 题目 设计并实现一个 TwoSum 的类,使该类需要支持 add 和 find 的操作. add 操作 - 对内部数据结构增加一个数. find 操作 - 寻找 ...

  9. 百度搜索大数据:“摆摊技巧”搜索热度暴涨655%;中国电信:将逐步关闭3G网络业务;IntelliJ IDEA新版发布|极客头条...

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极 ...

最新文章

  1. 面试:BigDecimal一定不会丢失精度吗?
  2. springboot整合ElasticSearch出现的问题
  3. sysfs方式控制GPIO
  4. linkedlist增删java,哪位高手可以给一下linkedlist中的常用的增删改查的命令吗?谢谢了!...
  5. 八十五、Python | Leetcode数据结构之图和动态规划算法系列
  6. leetcode-242-有效的字母异位词
  7. [Java设计模式]期末作业参考
  8. PyTorch基础(part7)--CNN
  9. PHP 中数组获取不到元素
  10. AndroidTV开发12——大屏TV电视及盒子Apk远程安装说明文档
  11. 初学“深入浅出MFC”之(一)
  12. 拖放drag、drog
  13. Deconstructing laws of accessibility and facility distribution in cities
  14. 盘点2017 CES展会所有亮眼黑科技 (下)
  15. Java图书管理系统(非正式系统任务导向型,内含完整项目代码),编辑Library类并完成TestDriver,南澳大学计算机大作业。
  16. python实现zip分卷压缩与解压
  17. python中加注释_python中如何添加注释
  18. 虚拟机共享计算机的网络连接,Parallels Desktop如何共享网络 Mac与虚拟机共享网络设置教程...
  19. TM4C123系列(三)————PWM输出
  20. 综合评价的基本理论和数据预处理

热门文章

  1. javascript --- 原生的拖拽功能实现
  2. 前端安全之token
  3. 刚刚,OpenStack 第 19 个版本来了,附28项特性详细解读!
  4. 2springboot:快速创建springboot项目
  5. SQL Where in list 问题
  6. 分布式锁与实现(一)——基于Redis实现
  7. underscore.js 页面数据渲染
  8. 使用WebDriver遇到的那些坑
  9. Objective-C Runtime 运行时之五:协议与分类
  10. Android Volley框架的使用(二)