[LintCode] Add and Search Word 添加和查找单词

简介:

Design a data structure that supports the following two operations: addWord(word) and 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.
Notice
You may assume that all words are consist of lowercase letters a-z.
Example
addWord("bad")
addWord("dad")
addWord("mad")
search("pad")  // return false
search("bad")  // return true
search(".ad")  // return true
search("b..")  // return true

LeetCode上的原题,请参见我之前的博客Add and Search Word - Data structure design

class WordDictionary {
public:
    struct TrieNode {
        bool isLeaf;
        TrieNode *child[26];
    };
    
    WordDictionary() {
        root = new TrieNode();
    }

    // Adds a word into the data structure.
    void addWord(string word) {
        TrieNode *p = root;
        for (char c : word) {
            int i = c - 'a';
            if (!p->child[i]) p->child[i] = new TrieNode();
            p = p->child[i];
        }
        p->isLeaf = 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) {
        search(word, root, 0);
    }
    
    bool search(string &word, TrieNode *p, int i) {
        if (i == word.size()) return p->isLeaf;
        if (word[i] == '.') {
            for (auto a : p->child) {
                if (a && search(word, a, i + 1)) return true;
            }
            return false;
        } else {
            return p->child[word[i] - 'a'] && search(word, p->child[word[i] - 'a'], i + 1);
        }
    }

private:
    TrieNode *root;
};

本文转自博客园Grandyang的博客,原文链接:添加和查找单词[LintCode] Add and Search Word ,如需转载请自行联系原博主。

相关文章
|
11月前
|
自然语言处理 搜索推荐 数据挖掘
淘宝商品描述 API 接口的开发、应用与收益
淘宝商品描述API接口的开发与应用涵盖注册成为开发者、了解API规范、选择开发工具及语言(如Python)和实现代码调用。该接口可用于优化电商平台商品展示、同步数据、竞品分析、智能客服及个性化推荐,从而提高销售转化率、降低运营成本并拓展业务机会。通过自动化处理和数据分析,企业能更精准地满足消费者需求,提升竞争力。
236 9
|
存储
人工光合作用:可持续能源的替代方案
【10月更文挑战第4天】在能源紧缺与环境污染日益严重的背景下,人工光合作用作为模拟自然光合作用的技术,展示了其在可持续能源领域的巨大潜力。本文详细介绍了其基本原理,即通过人工装置将太阳能、水和二氧化碳转化为清洁燃料;技术进展包括光催化剂优化、集成反应系统及多样化产物;以及其在清洁能源生产、碳减排和环境治理中的应用。随着研究的深入,人工光合作用有望成为未来能源转型的关键技术。
|
11月前
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
490 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
11月前
|
弹性计算 运维 自然语言处理
Copilot测评报告------终端智能化
作为一名后端开发工程师,我日常需要进行云资源的运维和管理。2025年初,我尝试了阿里云推出的OS Copilot,这款基于大模型的操作系统智能助手支持Alinux、CentOS、Ubuntu等系统,具备自然语言问答、辅助命令执行、系统运维调优等功能。安装过程简单流畅,通过简单的配置即可使用。Copilot不仅能处理复杂指令,还能解释管道命令,极大提升了Linux系统的使用效率。尤其在agent模式下,智能化程度更高,显著减轻了工程师的工作负担。总的来说,Copilot的表现令人惊艳,终端操作从此更加智能便捷。
|
11月前
|
人工智能 新能源 数据安全/隐私保护
销售易CRM 2024年市场表现分析及2025年展望
2024年,腾讯旗下的销售易CRM在国内企业级SaaS服务领域取得显著进展。通过AI赋能推出智能销售助手,优化私有化部署方案,并提升移动端用户体验。在制造业、医疗等行业推出针对性解决方案,特别是在制造业数字化转型方面表现突出。客户服务体验方面,建立了专业的实施服务团队,提升了项目交付效率和客户满意度。展望2025年,销售易将深化AI集成,扩展产品生态,升级行业解决方案,并加强国际化布局。面对激烈竞争,销售易需继续提升产品易用性、垂直行业应用能力及数据安全措施。整体而言,销售易展现出强劲的发展势头,未来有望取得更大突破。
|
边缘计算 人工智能 测试技术
什么是虚拟机技术?
拟机技术作为现代计算环境中的重要组成部分,极大地丰富了我们对资源管理和系统部署的理解与实践。本文将深入探讨虚拟机的定义、工作原理、应用场景、优势、主要技术以及未来发展趋势,帮助读者全方位地理解虚拟机这一强大技术。
663 7
|
编解码 网络架构
802.11a 标准的数据速率是多少?
【8月更文挑战第24天】
829 0
|
自然语言处理 前端开发 开发者
|
人工智能 自然语言处理 Linux
免费ChatGPT4o灵办AI可体验浏览器插件
灵办AI就是您所需的最佳助手!我们为您带来了一款多功能AI工具,ChatGPT4o不仅能为您提供精准翻译,还能满足您的对话需求、智能续写、AI搜索、文档阅读、代码生成与修正等多种需求。灵办 AI,真正让工作和学习变得轻松高效!一款多功能智能助手,旨在提升工作和学习效率。它提供实时翻译、对话问答、搜索、写作和网页阅读等服务,支持多种浏览器和操作系统,帮助用户随时获取信息,打破语言障碍,优化内容创作和信息处理。
394 0
|
监控
Chrony命令如何使用
【5月更文挑战第15天】Chrony命令如何使用
706 3