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


 

posted @ 2022-07-11 11:09  Abandoned_Software  阅读(29)  评论(0编辑  收藏  举报