当前位置: 首页 > news >正文

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

题目描述:

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

实现 MagicDictionary 类:

  • MagicDictionary() 初始化对象
  • void buildDict(String[] dictionary) 使用字符串数组 dictionary 设定该数据结构,dictionary 中的字符串互不相同
  • bool search(String searchWord) 给定一个字符串 searchWord ,判定能否只将字符串中 一个 字母换成另一个字母,使得所形成的新字符串能够与字典中的任一字符串匹配。如果可以,返回 true ;否则,返回 false 

输入输出实例:

思路:我们先对类初始化,在__init__中初始化列表为空,然后在buildDict中将输入的词典元素存入。在search中开始找当前的单词是否满足改一个字母就在词典中即可。

判断当前单词是否在词典中的方法:遍历词典中的所有元素,如果当前词典元素与当前的单词长度不同我们之间跳过这层循环开始找下一个词典元素比;如果两者长度相同我们来找他们有几个不同的字母,使用judge变量来表示二者有几个字母不同,初始值为0。使用zip函数取当前词典元素和当前单词的每一个字母进行逐个对比,如果字母不同我们judge的值就加一,judge的值超过一我们就结束当前循环找下一个词典元素,如果对比完这两个单词后judge=1,就说明改完一个字母可以在词典中找到,返回True,否则False。

根据上述思路有以下代码:

class MagicDictionary:def __init__(self):#初始化为一个空列表self.words = list()def buildDict(self, dictionary: List[str]) -> None:#存入词典元素self.words = dictionarydef search(self, searchWord: str) -> bool:#遍历每一个词典单词for word in self.words:if len(word) != len(searchWord):continue#judge用来表示两个单词的差别字母个数judge = 0#使用zip来对word和searchWord的每一个字母操作for i, j in zip(word, searchWord):#当前字母不相同judge+1if i != j:judge += 1if judge > 1:breakif judge == 1:return Truereturn False# Your MagicDictionary object will be instantiated and called as such:
# obj = MagicDictionary()
# obj.buildDict(dictionary)
# param_2 = obj.search(searchWord)

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • scoket通信 -- 网络字节序
  • QT:QTableWidget 设置单元格边距
  • 【gitlab】gitlab-ce:17.3.0-ce.0 1:使用docker engine安装
  • 选择排序(C语言)以及选择排序优化
  • 学习C语言第十七天
  • 数据结构day02(链表)
  • luckyexcel 编辑预览excel文件
  • 【机器学习第9章——聚类】
  • elasticsearch 字段类型的索引、字段类型修改、字段类型、分页、排序、分组、聚合
  • Java+vue3+element-plus+ts上传图片到服务器并返回图片可访问链接
  • 关于SOA和微服务
  • docker swarm如何让两个副本分别跑在两台不同的主机上
  • ubuntu 24.04 软件源配置,替换为国内源
  • 【GitLab】使用 Docker 安装 GitLab:配置 SSH 端口
  • 数据守护者:SQL一致性检查的艺术与实践
  • C语言笔记(第一章:C语言编程)
  • dva中组件的懒加载
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • hadoop集群管理系统搭建规划说明
  • IDEA 插件开发入门教程
  • java2019面试题北京
  • js学习笔记
  • nginx 配置多 域名 + 多 https
  • Python_网络编程
  • Sass 快速入门教程
  • Spring Cloud中负载均衡器概览
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 大主子表关联的性能优化方法
  • 服务器从安装到部署全过程(二)
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 基于游标的分页接口实现
  • 基于组件的设计工作流与界面抽象
  • 解析 Webpack中import、require、按需加载的执行过程
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • Spring第一个helloWorld
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • # Maven错误Error executing Maven
  • # 安徽锐锋科技IDMS系统简介
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (152)时序收敛--->(02)时序收敛二
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (4) PIVOT 和 UPIVOT 的使用
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (力扣)循环队列的实现与详解(C语言)
  • (三)Honghu Cloud云架构一定时调度平台
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • ./configure,make,make install的作用(转)
  • .Net 8.0 新的变化
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET委托:一个关于C#的睡前故事