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&¬SameOne(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);
*/