Class BoyerMoore
java.lang.Object
AEDs3.PatternMatching.BoyerMoore
Implementa o algoritmo de Boyer-Moore para busca eficiente de padrões em
textos.
Este algoritmo é utilizado para encontrar a posição de um padrão dentro de um
texto,
utilizando uma técnica de pré-processamento para otimizar a busca.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final intTamanho do alfabeto ASCII estendido.private int[]Tabela de caracteres ruins para desalinhamento.private byte[]Padrão em bytes. -
Constructor Summary
ConstructorsConstructorDescriptionBoyerMoore(String patternText) Construtor da classe BoyerMoore que inicializa o padrão a ser buscado e preenche a tabela de caracteres ruins. -
Method Summary
Modifier and TypeMethodDescriptionintRetorna o comprimento do padrão.static booleanVerifica se o padrão especificado está presente no texto fornecido.private voidPreprocessa o padrão preenchendo a tabela de caracteres ruins.intsearch(byte[] text, int start) Executa a busca do padrão no texto fornecido a partir de uma posição inicial.searchInStream(InputStream in, String pattern, int blockSize) Busca todas as ocorrências do padrão em um fluxo de entrada, processando o texto em blocos.
-
Field Details
-
ALPHABET_SIZE
private static final int ALPHABET_SIZETamanho do alfabeto ASCII estendido.- See Also:
-
pattern
private byte[] patternPadrão em bytes. -
badCharTbl
private int[] badCharTblTabela de caracteres ruins para desalinhamento.
-
-
Constructor Details
-
BoyerMoore
Construtor da classe BoyerMoore que inicializa o padrão a ser buscado e preenche a tabela de caracteres ruins.- Parameters:
patternText- O padrão de texto que será buscado.
-
-
Method Details
-
preprocess
private void preprocess()Preprocessa o padrão preenchendo a tabela de caracteres ruins. Esta tabela é utilizada para determinar o deslocamento do padrão em caso de falha na correspondência durante a busca. -
search
public int search(byte[] text, int start) Executa a busca do padrão no texto fornecido a partir de uma posição inicial.- Parameters:
text- O vetor de bytes onde a busca será realizada.start- A posição inicial no vetor onde a busca deve começar.- Returns:
- A posição onde o padrão foi encontrado ou -1 se não encontrado.
-
getPatternLength
public int getPatternLength()Retorna o comprimento do padrão.- Returns:
- O tamanho do padrão em bytes.
-
match
Verifica se o padrão especificado está presente no texto fornecido.- Parameters:
pattern- O padrão a ser buscado.text- O texto onde a busca será realizada.- Returns:
- true se o padrão for encontrado no texto, caso contrário, false.
- Throws:
IOException- Se ocorrer um erro de leitura do texto.
-
searchInStream
public static List<Integer> searchInStream(InputStream in, String pattern, int blockSize) throws IOException Busca todas as ocorrências do padrão em um fluxo de entrada, processando o texto em blocos.- Parameters:
in- O fluxo de entrada contendo o texto onde a busca será realizada.pattern- O padrão a ser buscado.blockSize- O tamanho dos blocos a serem lidos do fluxo de entrada.- Returns:
- Uma lista de inteiros representando as posições onde o padrão foi encontrado.
- Throws:
IOException- Se ocorrer um erro de leitura do fluxo de entrada.
-