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来存贮的,不知道为啥一直给我报超过时间限制错误,后来我看了下答案,思路跟我解决的方法一样,我就改成了数组,还是报超过时间限制错误,但是本地运行是没有问题的。