676实现一个魔法词典
7月11日
问题:676实现一个魔法词典
设计一个使用单词列表进行初始化的数据结构,单词列表中的单词 互不相同 。 如果给出一个单词,请判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于你构建的字典中。
实现 MagicDictionary 类:
- MagicDictionary() 初始化对象
- void buildDict(String[] dictionary) 使用字符串数组 dictionary 设定该数据结构,dictionary 中的字符串互不相同
- bool search(String searchWord) 给定一个字符串 searchWord ,判定能否只将字符串中 一个 字母换成另一个字母,使得所形成的新字符串能够与字典中的任一字符串匹配。如果可以,返回 true ;否则,返回 false 。

我的代码:
package cn.com.da.lk;
import java.util.Arrays;
import java.util.List;
/**
* @deviceName 97738
* @Author da
* @Date 2022/7/11 8:48
* @QQ 977389678
* @Phone 15932639701
*/
public class MagicDictionary {
List<String> list = null;
String[] ss = null;
public MagicDictionary() {
}
public void buildDict(String[] dictionary) {
ss = dictionary;
// if (list==null)
// {
// list = new ArrayList<String>();
// }
// list.clear();
// list.add(dictionary[0]);
// for (String a : dictionary)
// {
// list.add(a);
// }
}
public boolean search(String searchWord) {
if (searchWord == null) {
return false;
}
boolean flag = false;
for (int i = 0; flag == false && i < ss.length; ) {
String l = ss[i];
if (l.length() == searchWord.length()) {
int num = 0;
for (int j = 0; j < l.length(); j++) {
if (l.charAt(j) == searchWord.charAt(j))
{}
else {
num = num + 1;
}
}
if (num == 1) {
return true;
}
} else {
i++;
}
}
return flag;
// if (searchWord ==null)
// {
// return false;
// }
// boolean flag = false;
// int size = list.size();
// for (int i =0 ;flag==false&&i<size;)
// {
// String l = list.get(i);
// if (l.length()==searchWord.length())
// {
// int num = 0 ;
// for (int j=0;j<l.length();j++)
// {
// if(l.charAt(j)==searchWord.charAt(j))
// {}
// else
// {
// num =num +1;
// }
// if (num ==1)
// {
// flag =true;
// }
// }
//
// }
// else
// {
// i++;
// }
// }
// return flag;
}
public void display() {
if (list == null) {
} else {
System.out.println(Arrays.asList(list));
}
}
public static void main(String[] args) {
MagicDictionary a = new MagicDictionary();
String[] s = {"MagicDictionary", "buildDict", "search", "search", "search", "search"};
String[] s1 = {null, "hello", "hhllo", "hell", "leetcoded"};
a.buildDict(s);
a.display();
String w = "MagicDictionard";
System.out.println(a.search(w));
}
}
最开始我是用list来存贮的,不知道为啥一直给我报超过时间限制错误,后来我看了下答案,思路跟我解决的方法一样,我就改成了数组,还是报超过时间限制错误,但是本地运行是没有问题的。
浙公网安备 33010602011771号