【LeetCode】实现一个魔法字典 Java 题解
题目描述
设计一个使用单词列表进行初始化的数据结构,单词列表中的单词 互不相同 。 如果给出一个单词,请判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于你构建的字典中。
实现 MagicDictionary 类:
MagicDictionary() 初始化对象 void buildDict(String[] dictionary) 使用字符串数组 dictionary 设定该数据结构,dictionary 中的字符串互不相同 bool search(String searchWord) 给定一个字符串 searchWord ,判定能否只将字符串中 一个 字母换成另一个字母,使得所形成的新字符串能够与字典中的任一字符串匹配。如果可以,返回 true ;否则,返回 false 。
思路分析
今天的算法题目是设计类题目,需要我们设计一种数据结构,高效的完成题目要求。题目要求判定能否只将字符串中 一个 字母换成另一个字母,使得所形成的新字符串能够与字典中的任一字符串匹配。如果可以,返回 true ;否则,返回 false 。
我们分解条件来使用,判断字典中是否包含字符串,我们可以先构建一个数据结构,存储所有的字典数据,方便后面使用。
只将字符串中 一个 字母换成另一个字母,如果直接转换字母比较复杂,我们可以转换思维,如果当前字符串和字典中的某一个字符串不同的字母是 1 个,就可以完成转换,返回 true。具体实现代码如下,供参考。
通过代码
总结
search() 的时间复杂度是 O(n * n), 空间复杂度是 O(n)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【Albert】的原创文章。
原文链接:【http://xie.infoq.cn/article/b82b0c06c10e43f6af8b854ba】。文章转载请联系作者。
评论