Leetcode211 - Add and Search Word - Data structure design

Ubutntu下使用realsense d435i(二):获取某二维像素点的三维坐标 00 准备工作 准备工作包括安装驱动以及pyrealsense2,具体可参考上一篇: Ubutntu下使用realsense d435i(一):准备工作以及安装pyrealsense2 https://blog.youkuaiyun.com/gyxx1998/article/details/121461293 01 通过二维像素点获得物体三维坐标 这个在上一篇已经介绍了代码: realsense d435i获取某像素点三维坐标(计算深度和点云两种方法) https://blog.youkuaiyun.com/gyxx1998/ 阅读详情

我的新博客地址:HuHaoyu’s Blog,最近新增了Jekyll的paginator分页功能和Swiftype的搜索引擎。欢迎参观!

Design a data structure that supports the following two operations:

void addWord(word)
bool search(word)

search(word) can search a literal word or a regular expression string containing only letters a-z or .. A . means it can represent any one letter.

For example:

addWord("bad")
addWord("dad")
addWord("mad")
search("pad") -> false
search("bad") -> true
search(".ad") -> true
search("b..") -> true

Note:
You may assume that all words are consist of lowercase letters a-z.

题意

设计一种数据结构支持如下两个操作:

void addWord(word)
bool search(word)

search(word) 可以搜索普通字母 a-z 或 .。其中, . 可以代表任意一个字母。

举例如下:

addWord("bad")
addWord("dad")
addWord("mad")
search("pad") -> false
search("bad") -> true
search(".ad") -> true
search("b..") -> true

提示:

提供的所有单词都是由小写字母 a-z 组成。

分析

不管用hash还是trie,插入(addWord(string word))的时间复杂度最好就是Σni,即所有字典集元素的字符个数。而查找(search(string word))的时间复杂度则不同。由于.的存在,使得hash的O(1)查找失去了优势。而Trie Tree则可以在遇到.时递归地搜索对应节点下的每一个letter。因此最后决定采用字典树作为数据结构。

非常无语的是在submit solution时,总报错invalid types ‘TrieNode* [26][<unresolved overloaded function type>]’ for array subscript,原本以为语法写错了,最后才发现原来某处index写成了inedex。并不知道为什么会报这种错误=.=。

AC代码

class TrieNode {
public:
    TrieNode() {
        isTail = false;
        for (TrieNode *&letter : letters) { letter = NULL; }
    }
    bool isTail;
    TrieNode *letters[26];
};

class WordDictionary {
public:
    WordDictionary() { root = new TrieNode(); }
    // Adds a word into the data structure.
    void addWord(string word) {
        TrieNode *curr = root;
        for (char letter : word) {
            int index = find(letter);
            if (!curr->letters[index]) {
                curr->letters[index] = new TrieNode();
            }
            curr = curr->letters[index];
        }
        curr->isTail = true;
    }

    // Returns if the word is in the data structure. A word could
    // contain the dot character '.' to represent any one letter.
    bool search(string word) {
        return dfs_search(word, 0, root);
    }
private:
    TrieNode *root;

    int find(char letter) {
        return static_cast<int>(letter - 'a');
    }

    bool dfs_search(string word, int i, TrieNode *curr) {
        if (!curr) return false;
        if (word.size() == i) { return curr->isTail; }

        if (word[i] != '.') {
            return dfs_search(word, i + 1, curr->letters[find(word[i])]);
        } else {
            for (int k = 0; k != 26; ++k) {
                if (curr->letters[k] && dfs_search(word, i + 1, curr->letters[k])) {
                    return true;
                }
            }
        }
        return false;
    }
};

// Your WordDictionary object will be instantiated and called as such:
// WordDictionary wordDictionary;
// wordDictionary.addWord("word");
// wordDictionary.search("pattern");

如果代码或分析有误,请批评指正。谢谢。

SQL Prompt 9.0插件突然无法使用解决办法(附防联网激活)多图+文字 可能由于Redgate公司最近抓盗版抓得严,导致激活后的SQL Prompt联网后突然无法使用,无论卸载重装都没办法继续使用,本人同时使用SQL Assistant和SQL Prompt,我喜欢SQL Assistant代码提示功能,而SQL Prompt我喜欢将查询结果复制后可以直接生产插入脚本,这是最爽的一件事,即便对表有多么熟悉,没有这些插件,几行语法都要敲大半天,目前本人已经离不开这两个插... 阅读详情

相关推荐

电压比较器---滞回比较器(施密特触发器)

当输入电压从小电压开始增加,当其大于VT+时,电压比较器输出低电平,此时阈值电压变成下门限电压(VT-);当输入电压从大电压开始减小,当其小于VT-时,电压比较器输出高电平,此时阈值电压变成上门限电压(VT+);只有当第一次超过上门限电压或者下门限电压值,电压比较器的输出才会翻转变化;Uo为比较输出电压,有两种电压状态VoH(高电平)和VoL(低电平);当Uo输出为高时,电压比较器的阈值电压是上门限电压(VT+);当Uo输出为低时,电压比较器的阈值电压是下门限电压(VT-);Vref为比较参考电压;

weixin_69076249的博客 1万+

Add and Search Word - Data structure design

Design a data structure that supports the following two operations: void addWord(word) bool search(word) search(word) can search a literal word or a regular expression string containing only letter

brucehb的专栏 2234

Windows 10下三菱PLC控件安装报错Error Number:-119的终极解决方案(附详细步骤)

本文针对Windows 10系统安装三菱PLC控件时常见的Error Number:-119报错,提供了深度分析与终极解决方案。文章剖析了该错误源于oleaut32.dll文件版本冲突,并详细介绍了通过设置兼容性模式、手动注册DLL、直接安装MX Component以及高级系统修复等多种方法,帮助用户彻底解决此安装难题,顺利搭建PLC开发环境。

weixin_29289821的博客 330

一种通用的C++类或者结构成员变量的初始化方法

C++11提供了新的特性,可以初始化一些类或者结构成员变量,尤其某类实例化的变量的初始化,下面介绍一种在C++98中也可以初始化类成员变量的通用方法

大飞的博客 576

大数据运营可视化:Tableau+PowerBI数据看板搭建教程

当企业数据量从“GB级”跃升到“TB级”,运营人员面临的最大挑战不再是“如何收集数据”,而是“如何让数据说话”。数据看板作为“运营指挥中心的仪表盘”,能将零散的用户行为、业务指标、流量趋势浓缩成可快速解读的视觉语言。本文结合Tableau(自由探索的“数据瑞士军刀”)与PowerBI(微软生态的“组合家具”)两大工具,从需求分析→数据准备→指标设计→视图搭建→ dashboard 组合,一步步教你搭建符合业务逻辑的运营看板。

AI智能探索者的博客 1362

ParaView: GUI 轴网格

ParaView: GUI 轴网格

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1923

Leetcode 211 Add and Search Word - Data structure design

设计一个数据结构来支持以下两个操作:search(word)既可以查找一个字面上的直接量,也可以查找一个包含a-z和'.'的正则表达式,'.'表示任意字符。

(ง •̀_•́)ง 804

01 - 什么是SVM

摘要:SVM(共享虚拟内存)技术使CPU和GPU能共享同一虚拟地址空间,简化异构计算编程。传统模型需手动管理CPU/GPU内存和拷贝数据,而SVM允许直接传递指针,自动处理页面迁移和一致性维护。其核心包括统一地址空间、按需迁移、页面故障处理和一致性管理,显著降低编程复杂度并提升性能。通过HMM框架、MMU通知和GPU页面异常等机制实现高效内存共享,支持复杂数据结构,为异构计算带来便利。

图形/计算GPU的驱动与虚拟化技术分享园地 3123

invalid types ‘<unresolved overloaded function type>[int]‘ for array subscript|

记录一下错误error: invalid types ‘[int]’ for array subscript| 这个错误产生的原因是由于我定义数组的时候出错了先看代码吧 #include<stdio.h> int main() { int n; n=5; int a[n]; } 原因就在于像这样定义一个数组,只要一使用就会报这样的错误,当然并非报这样的错误就是由于这个原因,这只是原因之一,一般而言,我们都知道不可以这样来定义数组,但是由于写多了,写的有点懵了,犯

Growzhang的博客 7151

刷机维修进阶教程-----adb禁用错了系统app导致无法开机 如何保数据无损恢复机型

在刷机维修过程中 。我们会遇到一些由于客户使用adb指令来禁用手机app而导致手机无法开机进入系统的故障机型。通常此类问题机型有好几种解决方法。但如果客户需要保数据来恢复机型。其实操作也是很简单的.还有类似误删除应用导致不开机等等如何保数据。  通过博文了解💝💝💝    1💝💝💝----adb禁用或者删除系统app导致无法开机的几种解决方法 2💝💝💝----如何保数据来无损恢复机型 3💝💝💝----其他保数据解决系统类故障无法开机的步骤解析

小马哥的专栏 1352

【数据集6】全球人工不透水面积GAIA(清华数据)

全球人工不透水面GAIA简介及其应用

WW、forever的博客 3802

211. Add and Search Word - Data structure design

题目:添加和搜索单词-数据结构设计 Design a data structure that supports the following two operations: void addWord(word) bool search(word) search(word) can search a literal word or a regular expression stri

StudingCoder的博客 634

费雪的未来增长评估:预测颠覆性技术的影响

本文旨在提供一个系统性的框架,用于评估和预测颠覆性技术的增长轨迹。我们将重点关注费雪增长模型(Fisher-Pry Model)这一经典技术扩散理论,探讨其在现代技术预测中的应用价值。文章首先介绍费雪增长模型的基本概念,然后深入其数学原理和算法实现。随后展示实际应用案例,讨论工具资源,最后探讨未来发展趋势。每个部分都包含详细的技术实现和理论分析。费雪增长模型(Fisher-Pry Model):一种描述技术替代过程的S型增长模型,用于预测新技术取代旧技术的速率。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 928

leetcode 211: Add and Search Word - Data structure design

Add and Search Word - Data structure design leetcode 211

西施豆腐渣 7972

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

[Leetcode 211, Medium] Add and Search Word - Data structure design

[Leetcode 211, Medium] Add and Search Word - Data structure design

算法的实践 744

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

[leetcode] 211 Add and Search Word - Data structure design

因为给定了a-z这个范围,并且字符串的添加和查找符合Trie的常用方法,因此考虑使用Trie这种数据结构。 然后和普通的Trie不同的是,要匹配正则表达式中的“.”,也就是说在这一层是无法判断沿着拿个结点向下走的,所以要循环这一层的结点,只有这一层所有结果失败后才能返回false,剩下的递推。所以我们采取Trie+回溯法。 代码中的searchHelp函数是专门用于回溯的,要求会回溯的掌握比较

NK_test的博客 1883

[leetcode] 211. Add and Search Word - Data structure design

Description Design a data structure that supports the following two operations: void addWord(word) bool search(word) search(word) can search a literal word or a regular expression string containing o...

Learning from the mistakes 326

[Leetcode] 211. Add and Search Word - Data structure design

Problems: https://leetcode.com/problems/add-and-search-word-data-structure-design/ Solution: 本题如果使用hashmap的话,在search时将会很难应付“…ab”的情况 class WordDictionary { class TrieNode { boolean isTrie;...

Renoler的博客 154

LeetCode211 Add and Search Word - Data structure design

Design a data structure that supports the following two operations: void addWord(word) bool search(word) search(word) can search a literal word or a regular expression string containing only lette...

李歇特冯-兹拜因巴哈的博客 205

LeetCode 211. Add and Search Word - Data structure design

借用LeetCode 208. Implement Trie (Prefix Tree)中设计的字典树,特判查询字符为.时的情况即可。 注意: 成员变量的初始化应放在构造函数的initializing list而不是body中,使成员变量只被初始化一次,没有被再次赋值; 使用shared_ptr代替裸指针来管理内存。 代码: class TrieNode { public: T

Stephen Wong的专栏 1272

LeetCode - 211. Add and Search Word - Data structure design(字典树和递归)

LeetCode-211. Add and Search Word - Data structure design(字典树和递归) 题目链接 题目 解析 首先知道字典树的基本操作。 对于这个题目:  addWord()操作没什么好说的,就是向字典树添加元素,记得维护结点的end值; 匹配的过程是一个递归的过程,从根结点开始,递归终止条件是node.end &amp;amp;amp;gt; 0(返...

zxzxin的博客~ 771

LeetCode 211 Add and Search Word - Data structure design

Design a data structure that supports the following two operations:void addWord(word) bool search(word) search(word) can search a literal word or a regular expression string containing only letters a-...

ncst 374

LeetCode211. Add and Search Word - Data structure design

>Design a data structure that supports the following two operations: >``` void addWord(word) bool search(word) >``` >search(word) can search a literal word or a regular expression string containing only letters

yanqinghe123的专栏 499

[LeetCode 211] Add and Search word -- Data Structure Design

Design a data structure that supports the following two operations:void addWord(word) bool search(word) search(word) can search a literal word or a regular expression string containing only letter

coder 进阶的专栏 1065

leetcode 211 Add and Search Word - Data structure design(java 实现)

此题是字典树的应用 字典树(Trie树),是一种利用字符的单个匹配来实现树的一层层遍历,利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 它有3个基本性质: 根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串; 每个节点的所有子节点包含的字符都不相同。 在此题中,因为添加了...

qq_23156731的博客 390

Leetcode 211. Add and Search Word - Data structure design

题目描述:实现一个trie树使其支持正则.搜索。 Leetcode 211. Add and Search Word - Data structure design 思路,其实就是trie树考虑.字符的时候进行搜索,利用深度优先,找到符合的情况,当遇到.的时候遍历其所有子节点(除is_word)除外。然后如果找到就返回True 如果找不到就是不做任何修改,在循环最后返回False.可以设立一...

Za七杂⑧ 213
上一篇: Pseudo-random algorithm: prd and rsa based
下一篇: Android Studio应用指南
coderhuhy
博客等级 码龄12年 24粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值