设计一个使用单词列表进行初始化的数据结构,单词列表中的单词 互不相同 。 如果给出一个单词,请判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于你构建的字典中。
实现 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]
class MagicDictionary {
String [] res;
public MagicDictionary() {
}
public void buildDict(String[] dictionary) {
res=new String[dictionary.length];
for(int i=0;i<dictionary.length;i++){
res[i]=dictionary[i];
}
}
public boolean search(String searchWord) {
for(String s:res){
if(isSimilar(s,searchWord)){
return true;
}
}
return false;
}
public boolean isSimilar(String s,String target){
int count=0;
if(s.length()!=target.length()){
return false;
}
for(int i=0;i<s.length();i++){
if(s.charAt(i)!=target.charAt(i)){
count++;
}
}
//必须有一个字符不同 才是魔法字符
return count==1?true:false;
}
}
魔法字典数据结构设计
本文介绍了一种名为MagicDictionary的特殊数据结构的设计方法。该数据结构能够接收一个互不相同的单词列表作为输入,并支持查询操作,即判断是否可以通过替换查询单词中的一个字符来匹配字典中的任何一个单词。
205

被折叠的 条评论
为什么被折叠?



