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

算法:魔法字典

1️⃣要求: 

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

实现 MagicDictionary 类:

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

示例:

输入
["MagicDictionary", "buildDict", "search", "search", "search", "search"]
[[], [["hello", "leetcode"]], ["hello"], ["hhllo"], ["hell"], ["leetcoded"]]
输出
[null, null, false, true, false, false]解释
MagicDictionary magicDictionary = new MagicDictionary();
magicDictionary.buildDict(["hello", "leetcode"]);
magicDictionary.search("hello"); // 返回 False
magicDictionary.search("hhllo"); // 将第二个 'h' 替换为 'e' 可以匹配 "hello" ,所以返回 True
magicDictionary.search("hell"); // 返回 False
magicDictionary.search("leetcoded"); // 返回 False

提示:

  • 1 <= dictionary.length <= 100
  • 1 <= dictionary[i].length <= 100
  • dictionary[i] 仅由小写英文字母组成
  • dictionary 中的所有字符串 互不相同
  • 1 <= searchWord.length <= 100
  • searchWord 仅由小写英文字母组成
  • buildDict 仅在 search 之前调用一次
  • 最多调用 100 次 search

2️⃣个人算法思路:

先建立一个列表将所有的库存单词存入。

1.用户输入一个Search单词,我们需要针对每一个库存单词进行识别

2.对于每一次单词识别,单词长度不一样的直接跳过

3.接下来逐个字母扫描,如果有不一样的字母diffWords计数+1

4.如果扫描完一个库存单词后diffWords=1就为目标单词,返回True。

5.如果diffWords!=1证明有两个及以上字母不同,则继续扫描下一个单词

6.如果全部扫描完后,不满足True的条件的即为False

Python代码具体实现:

class MagicDictionary(object):def __init__(self):self.WordList = []def buildDict(self, dictionary):for word in dictionary:self.WordList.append(word)def search(self, searchWord):for word in self.WordList:if len(word) != len(searchWord): continuediffWords = 0for i in range(len(word)):if word[i] != searchWord[i]:if diffWords == 0:diffWords += 1else:diffWords += 1breakif diffWords == 1: return Truereturn Falseif __name__ == '__main__':obj = MagicDictionary()obj.buildDict(["hello","hillo", "hivee", "leetcode"])param_2 = obj.search("hello")param_3 = obj.search("hallo")param_4 = obj.search("hallo0")param_5 = obj.search("leescode")param_6 = obj.search("hivea")param_7 = obj.search("judge")param_8 = obj.search("aaaaa")print(param_2)print(param_3)print(param_4)print(param_5)print(param_6)print(param_7)print(param_8)

测试结果:

http://www.lryc.cn/news/425503.html

相关文章:

  • html+css 实现hover 翻转按钮
  • ETL程序员如何平衡日常编码工作与提升式学习
  • 被嫌弃的35岁程序员,竟找到了职业的新出路:PMP项目管理
  • 跟李沐学AI:目标检测、锚框
  • 【鸿蒙学习】HarmonyOS应用开发者基础 - 构建更加丰富的页面(一)
  • 机器学习深度学习中的Warmup技术是什么?
  • ECMAScript6中的模块:export导出、import导入
  • mysql写个分区表
  • Hystrix——服务容错保护库
  • 【区块链+金融服务】河北股权交易所综合金融服务平台 | FISCO BCOS应用案例
  • [图解]需要≠需求-《分析模式》漫谈
  • 刷到好听的音频怎么办
  • 怎么在网络攻击中屹立不倒
  • 详解 Python 中的面向对象编程(2)
  • 数据结构-线性表-顺序表
  • AI绘画大模型-StableDiffusion最强模型sd3(本地安装方法)
  • SpringBoot调用外部接口的几种方式
  • MySQL:information_schema查找某个表的主键是否在数据的其他位置出现之二
  • Linux进程和计划任务管理
  • 【Angular18】封装自定义组件
  • 【流媒体】RTMPDump—RTMP_ConnectStream(创建流连接)
  • MySQL学习3之锁机制
  • 2004-2023年上市公司过度负债数据(含原始数据+计算结果)
  • [机器学习]--KNN算法(K邻近算法)
  • 跨平台控制神器Escrcpy,您的智能生活助手
  • AR 眼镜之-开关机定制-实现方案
  • 论文阅读-Transformer Layers as Painters
  • 【STL】vector模拟实现
  • 静态成员static关键字
  • 本地项目git同步到线上