Algoritmo de pesquisa de string (String Search) em Java

O Algoritmo de Pesquisa de String é uma técnica fundamental em Java programação usada para pesquisar uma substring específica dentro de uma string maior. Este algoritmo é amplamente empregado em vários aplicativos de processamento de texto, incluindo editores de texto, mecanismos de pesquisa e ferramentas de análise de dados.

Como funciona o algoritmo de pesquisa de strings

O Algoritmo de Pesquisa de String funciona comparando cada caractere da substring que está sendo pesquisada com os caracteres da string principal. Ele itera pela string principal e verifica uma possível correspondência comparando os caracteres um por um. Se uma correspondência for encontrada, ela indicará a posição inicial da substring na string principal.

Vantagens e desvantagens do algoritmo de pesquisa de strings

Vantagens:

  • Implementação Simples: O algoritmo é fácil de entender e implementar, tornando-o adequado para tarefas básicas de pesquisa de strings.
  • Aplicável a vários cenários: Este algoritmo pode ser usado em uma ampla variedade de aplicações que envolvem a pesquisa de padrões específicos em dados de texto.

Desvantagens:

  • Ineficiente para textos grandes: Na pior das hipóteses, a complexidade de tempo do algoritmo pode se tornar alta, tornando-o ineficiente para textos grandes.
  • Correspondência de padrões limitada: A versão básica do algoritmo pode não lidar com requisitos complexos de correspondência de padrões.

Exemplo e explicação

Vamos considerar um exemplo de uso do algoritmo de pesquisa de string para encontrar uma palavra específica em uma frase no formato Java.

public class StringSearchExample {  
    public static int searchString(String mainString, String substring) {  
        int mainLength = mainString.length();  
        int subLength = substring.length();  
  
        for(int i = 0; i <= mainLength- subLength; i++) {  
            int j;  
  
            for(j = 0; j < subLength; j++) {  
                if(mainString.charAt(i + j) != substring.charAt(j)) {  
                    break;  
                }  
            }  
  
            if(j == subLength) {  
                return i; // Substring found at position i  
            }  
        }  
  
        return -1; // Substring not found  
    }  
  
    public static void main(String[] args) {  
        String text = "The quick brown fox jumps over the lazy dog";  
        String search = "fox";  
  
        int position = searchString(text, search);  
  
        if(position != -1) {  
            System.out.println("Substring found at position: " + position);  
        } else {  
            System.out.println("Substring not found");  
        }  
    }  
}  

Neste exemplo, o algoritmo procura a substring “fox” dentro do texto fornecido. Ele itera através de cada caractere do texto, comparando-o com os caracteres da substring. Quando uma correspondência é encontrada, o algoritmo retorna a posição inicial da substring no texto.

Isso ilustra como o algoritmo de pesquisa de strings pode localizar substrings em dados de texto maiores, tornando-o uma técnica essencial para manipulação e análise de texto em Java programação.