Java实现 LeetCode 211 添加与搜索单词 - 数据结构设计
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 添加与搜索单词 - 数据结构设计相关推荐
- LeetCode—211. 添加与搜索单词 - 数据结构设计
211. 添加与搜索单词 - 数据结构设计 题目描述:请你设计一个数据结构,支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配 . 实现词典类 WordDictionary : WordD ...
- 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 操作 - 寻找 ...
- java Trie实现英文单词查找树 搜索自动提示
原理解释文章:https://blog.csdn.net/beiyetengqing/article/details/7856113 代码应用: wordTrie.txt(工具类): package ...
最新文章
- 根据Apriltag进行角度和距离检测
- server长时间运行query,Ajax刷新被block
- python新闻评论分析_从新闻文章中提取评论
- 牛客网暑期ACM多校训练营(第十场)F.Rikka with Line Graph
- 【渝粤教育】广东开放大学 物权法 形成性考核 (43)
- redhat系统双网卡绑定
- @程序员,你真的懂数据可视化吗?
- python网址编码转换_刚学python,抓中文网页遇到编码的问题,怎么转换也不行……...
- 在Sql Server上安装插件Sql Prompt
- Photoshop CS2 视频教程-PS链接图层(转)
- Mercury老版路由器WDS
- 硬件知识——主板结构
- 检测某个地图某个怪物的数量的脚本
- maven项目创建出错Could not calculate buil d plan:Plugin org.apache.maven.plugins 避坑
- 【开心一刻】又想让马儿跑,又不给马儿吃草!
- MIPI CSI和DSI接口标准简介
- partitionBy()的解释
- 广告营销DSP和DMP概念解释
- laradock一些坑(长期维护)
- Java实现验证码生成