Example #1
0
// Método que verifica se um string está na trie, retorna 1 caso estejae -1 caso contrário
int Trie::buscaString(string word)
{
    int i = 0;
    Nodo* Aux;																									// Nodo auxiliar
    Aux = raiz;																									// que recebe a raiz da trie

    word = converteString(word);																				// Converte todas as letras para maiúsculas
    while(word[i] != '\0')																						// enquanto não é o fim da string continua procurando
    {
        Aux = Aux->getNodo(word[i]);																			// auxiliar recebe o nodo pra onde aponta o caracter da string

        if (Aux != NULL)																						// Se esse nodo não for nulo é porque até o momento existe a string então tem que seguir procurando
        {
            if ( word[i] == '$')																				// Caso chegou no caracter de fim de string é porque a string está na trie
            {
                return 1;																						// Então retorna 1
            }																									// Se nao for caracter de fim de string apenas segue pro proximo caracter
        }
        else																									// Se o nodo for nulo então é porque não tem o caracter q ta procurando logo a string toda nao da na trie
        {
            return -1;																							// retorna -1
        }
        i++;
    }
}
Example #2
0
// Método que insere um string na trie
void Trie::insereString(string word)
{
    int i = 0;
    Nodo* Aux;																									// Nodo auxiliar
    Aux = raiz;																									// que recebe a raiz da trie
    word = converteString(word);																				// Converte todas as letras para maiusculas

    while(word[i] != '\0')																						// enquanto nao é o fim da string vai adicionando
    {
        if (Aux->getNodo(word[i]) == NULL)																		// Se o nodo for nulo é porque ainda não foi inserido um prefixo igual
        {
            Aux->insere(word[i]);																				// Nesse caso insere um nodo com este prefixo
        }
        Aux = Aux->getNodo(word[i]);																			// E o nodo auxiliar desce um nodo na hierarquia da trie
        i++;
    }
}
Example #3
0
// Método que encontra a maior string que se pode encontrar na trie, não necessariamente indo até o fim dela
string Trie::buscaMaiorString(string word)
{
    int i = 0;
    Nodo* aux = raiz;																							// Nodo auxiliar que recebe a raiz da trie
    string aux2;																								// string auxiliar
    while(word[i] != '\0')																						// Enquanto não for o fim da string segue procurando
    {
        aux = aux->getNodo(word[i]);																			// Nodo auxiliar recebe o próximo nodo correspondente ao caracter
        if (aux == NULL)																						// Se ele for nulo é porque a maior substring encontrada foi a lida a agora
            break;																								// Logo sai do laço
        aux2 += word[i];																						// Se não for nulo então existe aquele caracter, logo concatena ele na string auxiliar e segue procurando pelo próximo caracter
        i++;
    }
    return aux2;
}