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

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

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 组成的。

class WordDictionary {Map<Integer,Set<String>> map = new HashMap<>();//根据字符串长度分开存放public WordDictionary() {}public void addWord(String word) {int length = word.length();if(map.get(length)!=null){map.get(length).add(word);}else{Set<String> set = new HashSet<>();set.add(word);map.put(length, set);}}public boolean search(String word) {Set<String> set = map.get(word.length());if(set==null){  //不存在该长度的字符串,直接返回false;return false;}if(set.contains(word)) return true;char[] chars = word.toCharArray();P:for(String s : set){if(word.length()!=s.length()){continue;}char[] cs = s.toCharArray();for(int i = 0; i< cs.length; i++){//逐个字符对比if(chars[i] != '.' && chars[i] != cs[i]){continue P;}}set.add(word);return true;}return false;}
}/*** Your WordDictionary object will be instantiated and called as such:* WordDictionary obj = new WordDictionary();* obj.addWord(word);* boolean param_2 = obj.search(word);*/

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

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

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

  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. java Trie实现英文单词查找树 搜索自动提示

    原理解释文章:https://blog.csdn.net/beiyetengqing/article/details/7856113 代码应用: wordTrie.txt(工具类): package ...

最新文章

  1. 根据Apriltag进行角度和距离检测
  2. server长时间运行query,Ajax刷新被block
  3. python新闻评论分析_从新闻文章中提取评论
  4. 牛客网暑期ACM多校训练营(第十场)F.Rikka with Line Graph
  5. 【渝粤教育】广东开放大学 物权法 形成性考核 (43)
  6. redhat系统双网卡绑定
  7. @程序员,你真的懂数据可视化吗?
  8. python网址编码转换_刚学python,抓中文网页遇到编码的问题,怎么转换也不行……...
  9. 在Sql Server上安装插件Sql Prompt
  10. Photoshop CS2 视频教程-PS链接图层(转)
  11. Mercury老版路由器WDS
  12. 硬件知识——主板结构
  13. 检测某个地图某个怪物的数量的脚本
  14. maven项目创建出错Could not calculate buil d plan:Plugin org.apache.maven.plugins 避坑
  15. 【开心一刻】又想让马儿跑,又不给马儿吃草!
  16. MIPI CSI和DSI接口标准简介
  17. partitionBy()的解释
  18. 广告营销DSP和DMP概念解释
  19. laradock一些坑(长期维护)
  20. Java实现验证码生成

热门文章

  1. 软件定义无线电(RFIC系列)
  2. c语言前缀编码,C语言实现中缀表达式转前缀表达式
  3. MCU低功耗系统设计笔记
  4. 邮件白名单设置方法【51CTO帮助】
  5. 如何在eplan里面画一个伺服驱动器_EPLAN几个使用小技巧,非常有用.doc
  6. 网站推广技巧之单向链接推广
  7. 关于java金钱换算问题所作的一次笔记
  8. PQMagic 错误提示
  9. 二阶系统的带宽(频域分析)
  10. maven打包更改版本号