博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LintCode] Add and Search Word 添加和查找单词
阅读量:6786 次
发布时间:2019-06-26

本文共 1616 字,大约阅读时间需要 5 分钟。

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上的原题,请参见我之前的博客。

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的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
Django2 model操作数据库
查看>>
使用Azure Policy限制所有ASM资源
查看>>
在win7系统下使用TortoiseGit(乌龟git)简单操作Git@OSC
查看>>
强大的ghost.py 使用实例
查看>>
快速搭建NTP时间服务器
查看>>
网络基础
查看>>
碰到 oracle 10g ORA-00257
查看>>
服务器群集实验 ——SQL群集2
查看>>
企业级监控工具cacti安装配置全过程
查看>>
Hibernate的模块结构
查看>>
锁机制
查看>>
gentoo添加自启动
查看>>
Cocos2d-x 3.1 Lua Binding
查看>>
linux 进度条的实现及makefile的简单应用
查看>>
Linux命令:sed简介
查看>>
linux X界面 输入密码正确,但是无法登陆系统,命令行界面可以登陆
查看>>
杨中科老师-C语言也能干大事链接
查看>>
查看linux分区占用空间情况
查看>>
理解flexible.js所需的viewport知识
查看>>
rman 操作
查看>>