Je suis actuellement tentent de résoudre ce problème sur HackerRank Tries - ContactsEssais - Contacts - HackerRank
Et mon algorithme échoue pour un seul cas de test. Cas de test n ° 1 Quelqu'un peut-il partager un aperçu de ce que j'ai besoin de changer afin de passer ce test. J'utilise une classe TrieNode qui contient un hashmap de ses nœuds enfants. Je stocke également la taille de chaque noeud pour définir le nombre de mots qu'il contient.
cas d'essai n ° 1 est la suivante:
add s
add ss
add sss
add ssss
add sssss
find s
find ss
find sss
find ssss
find sssss
find ssssss
Le code est le suivant:
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
TrieNode root;
class TrieNode{
Map<Character, TrieNode> children = new HashMap<Character, TrieNode>();
int size=0;
}
public Solution(){
root = new TrieNode();
}
public void addWord(String word){
TrieNode current = root;
for(int i=0;i<word.length();i++){
char c = word.charAt(i);
if(!current.children.containsKey(c)){
//create a new node
TrieNode temp = new TrieNode();
//add the word to the current node's children
current.children.put(c, temp);
current.size++;
current = temp;
}
else{
current.size++;
current = current.children.get(c);
}
}
}
public void prefixSearch(String letters){
TrieNode current = root;
boolean sequenceExists = true;
for(int i=0; i<letters.length();i++){
char c = letters.charAt(i);
if(current.children.containsKey(c)){
if(i == letters.length()-1){
System.out.println(current.size);
break;
}
else{
current = current.children.get(c);
}
}
else{
System.out.println(0);
break;
}
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
Solution sol = new Solution();
for(int a0 = 0; a0 < n; a0++){
String op = in.next();
String contact = in.next();
if(op.equals("add")){
if(contact.length() >=1 && contact.length() <=21)
sol.addWord(contact);
}
else if(op.equals("find")){
if(contact.length() >=1 && contact.length() <=21)
sol.prefixSearch(contact);
}
else{
//do nothing
}
}
}
}
Qu'est-ce que le test élémentaire # 1? – EJoshuaS
Je vais l'ajouter à la question – Spindoctor
Pendant une seconde je pensais que vous étiez possédé par un python. – Kayaman