LeetCode—211. 添加与搜索单词 - 数据结构设计
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. 添加与搜索单词 - 数据结构设计相关推荐
- Java实现 LeetCode 211 添加与搜索单词 - 数据结构设计
211. 添加与搜索单词 - 数据结构设计 设计一个支持以下两种操作的数据结构: void addWord(word) bool search(word) search(word) 可以搜索文字或正则 ...
- Leetcode 211. 添加与搜索单词 - 数据结构设计 解题思路及C++实现
解题思路: 用字典树来作为存储的数据结构. 新增单词的时候,就使用字典树插入新单词的方法,与LeetCode 208 题一样. 在查找某一个字典树时,使用深度优先搜索即可. class WordDic ...
- LeetCode 211. 添加与搜索单词 - 数据结构设计(Trie树)
1. 题目 设计一个支持以下两种操作的数据结构: void addWord(word) bool search(word) search(word) 可以搜索文字或正则表达式字符串,字符串只包含字母 ...
- [leetcode]211. 添加与搜索单词 - 数据结构设计 ---前缀树解法
前缀树解法: struct TrieNode {bool isEnd;TrieNode *next[26];TrieNode(){isEnd = false;memset(next, NULL, si ...
- 211. 添加与搜索单词 - 数据结构设计
211. 添加与搜索单词 - 数据结构设计 请你设计一个数据结构,支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配 . 实现词典类 WordDictionary : WordDictio ...
- leetcode 211. Design Add and Search Words Data Structure | 211. 添加与搜索单词 - 数据结构设计(Java)
题目 https://leetcode.com/problems/design-add-and-search-words-data-structure/ 题解 字典树 + 深度优先搜素,思路参考 le ...
- 2022-9-18 Leetcode211.211. 添加与搜索单词 - 数据结构设计【前缀树】
使用vector比较好,使用map会造成超时. struct Node {bool isWord;vector<Node*> next;Node():isWord(false) {next ...
- LeetCode 170. 两数之和 III - 数据结构设计(哈希map)
文章目录 1. 题目 2. 解题 1. 题目 设计并实现一个 TwoSum 的类,使该类需要支持 add 和 find 的操作. add 操作 - 对内部数据结构增加一个数. find 操作 - 寻找 ...
- 百度搜索大数据:“摆摊技巧”搜索热度暴涨655%;中国电信:将逐步关闭3G网络业务;IntelliJ IDEA新版发布|极客头条...
整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极 ...
最新文章
- 面试:BigDecimal一定不会丢失精度吗?
- springboot整合ElasticSearch出现的问题
- sysfs方式控制GPIO
- linkedlist增删java,哪位高手可以给一下linkedlist中的常用的增删改查的命令吗?谢谢了!...
- 八十五、Python | Leetcode数据结构之图和动态规划算法系列
- leetcode-242-有效的字母异位词
- [Java设计模式]期末作业参考
- PyTorch基础(part7)--CNN
- PHP 中数组获取不到元素
- AndroidTV开发12——大屏TV电视及盒子Apk远程安装说明文档
- 初学“深入浅出MFC”之(一)
- 拖放drag、drog
- Deconstructing laws of accessibility and facility distribution in cities
- 盘点2017 CES展会所有亮眼黑科技 (下)
- Java图书管理系统(非正式系统任务导向型,内含完整项目代码),编辑Library类并完成TestDriver,南澳大学计算机大作业。
- python实现zip分卷压缩与解压
- python中加注释_python中如何添加注释
- 虚拟机共享计算机的网络连接,Parallels Desktop如何共享网络 Mac与虚拟机共享网络设置教程...
- TM4C123系列(三)————PWM输出
- 综合评价的基本理论和数据预处理