1. 题目

实现一个带有buildDict, 以及 search方法的魔法字典。

对于buildDict方法,你将被给定一串不重复的单词来构建一个字典。

对于search方法,你将被给定一个单词,并且判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于你构建的字典中。

示例 1:
Input: buildDict(["hello", "leetcode"]), Output: Null
Input: search("hello"), Output: False
Input: search("hhllo"), Output: True
Input: search("hell"), Output: False
Input: search("leetcoded"), Output: False

注意:
你可以假设所有输入都是小写字母 a-z。
为了便于竞赛,测试所用的数据量很小。你可以在竞赛结束后,考虑更高效的算法。
请记住重置MagicDictionary类中声明的类变量,因为静态/类变量会在多个测试用例中保留。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/implement-magic-dictionary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 建立原始字典的哈希表,以及单词长度的记录表
  • 查找时,长度必须相等,且变形词在哈希表中,且变形词不为原词
class MagicDictionary {unordered_set<string> origin;unordered_set<int> len;string temp;int i;char ch;
public:/** Initialize your data structure here. */MagicDictionary() {}/** Build a dictionary through a list of words */void buildDict(vector<string> dict) {for(string& word : dict) {origin.insert(word);len.insert(word.length());}}bool search(string word) {if(!len.count(word.length()))return false;for(i = 0; i < word.size(); ++i){temp = word;for(ch = 'a'; ch <= 'z'; ++ch){temp[i] = ch;if(origin.count(temp) && temp != word)return true;}    }return false;}
};

LeetCode 676. 实现一个魔法字典(哈希)相关推荐

  1. LeetCode 676. 实现一个魔法字典

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   设计一个使用单词列表进 ...

  2. 676. 实现一个魔法字典

    676. 实现一个魔法字典 设计一个使用单词列表进行初始化的数据结构,单词列表中的单词 互不相同 . 如果给出一个单词,请判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于你构建的 ...

  3. leetcode 676. Implement Magic Dictionary | 676. 实现一个魔法字典(DFS+Trie 前缀树)

    题目 https://leetcode.com/problems/implement-magic-dictionary/description/ 题解 题意理解 前缀树问题,大意是是让你在字典中找到是 ...

  4. 676.实现一个魔法字典·前缀树

    链接:https://leetcode.cn/problems/implement-magic-dictionary/solution/by-xun-ge-v-3c60/ 来源:力扣(LeetCode ...

  5. 【LeetCode刷题记录】LeetCode经典题目数组求和及哈希表的使用!

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 LeetCode题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整 ...

  6. 哈希表(如何打造一个工业级的哈希表)

    目录 哈希思想 哈希函数 哈希冲突 1.开放寻址法 2.链表法 解决装载因子过大的问题 选择合适的哈希冲突解决方法 哈希思想 哈希表(hashtable)是数组的一一种扩展,由数组演化而来,底层依赖数 ...

  7. python定义一个全局字典_Python字典操作详细介绍及字典内建方法分享

    创建 方法一: >>> dict1 = {} >>> dict2 = {'name': 'earth', 'port': 80} >>> dict ...

  8. LeetCode 1814. 统计一个数组中好对子的数目(哈希)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个数组 nums ,数组中只包含非负整数. 定义 rev(x) 的值为将整数 x 各个数字位反转得到的结果. 比方说 rev(123) = 321 ...

  9. LeetCode 496. 下一个更大元素 I(哈希)

    1. 题目 给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集.找到 nums1 中每个元素在 nums2 中的下一个比其大的值. nums1 中数字 x ...

最新文章

  1. 上海市高校大学生计算机一级,上海市高校计算机等级考试(一级)..doc
  2. 伽卡他卡电子教室 百度百科_创建百度百科的好处
  3. 返回数组中的最大数 -freeCodeCamp
  4. 解决安装MarkupSafe安装 from setuptools import Feature 报错ImportError: cannot import name ‘Feature‘
  5. http get post java_Java发送http的get、post请求 - 穿梭于偶然
  6. [经典面试题][百度]数轴上从左到右有n各点a[0], a[1], ……,a[n -1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。...
  7. LINUX内核编译选项-4
  8. 登陆豆瓣显示服务器开小差,豆瓣打不开
  9. 解决启动CAD时没有响应
  10. html5 判断页面加载,js判断页面是否加载完成的方法
  11. 高精度加法 problem A+B
  12. 讯时网关部分话机无法注册问题
  13. 华为企业BG总裁阎力大:数字化转型激活指数级增长
  14. Vimeo视频下载工具
  15. Spring-配置数据源
  16. 第08课:子窗口交互
  17. android 5寸屏分辨率是多少钱,索尼Z5尊享版的屏幕尺寸是多少?分辨率是多少?...
  18. 最优控制理论 五、极大值原理→控制不等式约束
  19. 验证码-kaptcha
  20. 完整版数据库系统概论(第五版)-课后答案-免费网盘自提

热门文章

  1. 更新10_linux,时隔十年,QQ更新了Linux版本
  2. grpc php 返回值过大,使用grpc实现php、java、go三方互调
  3. vue php 文件上传,使用vue.js和laravel上传文件
  4. TD-SCDMA智能天线波束赋形能力的讨论
  5. elementui的css文件没有引入_Python中引入模块详细介绍,使用模块的过程中注意事项教程...
  6. linux学习第九天 (Linux就该这么学)
  7. 1000瓶药水,1瓶有毒药,几只小白鼠能够找出毒药
  8. ios截屏 u3d导出Xcode工程截屏
  9. linux查看磁盘占用
  10. [笔记]Go语言写文件几种方式性能对比