Java LeetCode aplicación 676 para lograr un diccionario magia (la violencia)

676. implementar un diccionario de la magia

Implementar un diccionario con un buildDict magia, y métodos de búsqueda.

Para el método buildDict, se le dará una serie de no repetición de la palabra para construir un diccionario.

Para el método de búsqueda, se le dará una palabra, y se determina si una sola letra de la palabra en otra carta, por lo que existe la nueva palabra formada en el diccionario que construir.

Ejemplo 1:

Input: buildDict(["hello", "leetcode"]), Output: Null
Input: search("hello"), Output: False
Input: search("hhllo"), Output: True
Input: search("hell"), Output: False
Input: search("leetcoded"), Output: False

nota:

Usted puede asumir que todas las entradas están en minúsculas letras az.
Para facilitar la competencia, la cantidad de datos utilizado en la prueba es pequeña. Puede al final de la competición, considere un algoritmo más eficiente.
Recuerde restablecer las variables de clase MagicDictionary declarados en la clase, ya que las variables estáticas / clase permanecerán en varios casos de prueba. Vea aquí para más detalles.

class MagicDictionary {
   List<String> list;
    /** Initialize your data structure here. */
    public MagicDictionary() {
        list=new ArrayList();
    }
    
    /** Build a dictionary through a list of words */
    public void buildDict(String[] dict) {
       for(int i=0;i<dict.length;i++){
           list.add(dict[i]);
       }
    }
    
    /** Returns if there is any word in the trie that equals to the given word after modifying exactly one character */
    public boolean search(String word) {
        int size=list.size();
        int n=word.length();
        for(int i=0;i<size;i++){
            String cur=list.get(i);
            if(cur.length()==n&&notSameOne(cur,word)){
                 return true;
            }
        } 
        return false; 
    }
    public boolean notSameOne(String str1,String str2){
         int n=str1.length();
         int disCout=0;
         for(int i=0;i<n;i++){
             if(str1.charAt(i)!=str2.charAt(i)){
                 disCout++;
             }
             if(disCout>1) return false; 
         }

         return disCout==1?true:false;  
    }
}

/**
 * Your MagicDictionary object will be instantiated and called as such:
 * MagicDictionary obj = new MagicDictionary();
 * obj.buildDict(dict);
 * boolean param_2 = obj.search(word);
 */
Liberadas 1727 artículos originales · ganado elogios 30000 + · vistas 3,56 millones +

Supongo que te gusta

Origin blog.csdn.net/a1439775520/article/details/105311617
Recomendado
Clasificación