Algorytm wyszukiwania ciągów (String Search) w Java

Algorytm wyszukiwania ciągów to podstawowa technika Java programowania używana do wyszukiwania określonego podciągu w większym ciągu. Algorytm ten jest szeroko stosowany w różnych aplikacjach do przetwarzania tekstu, w tym w edytorach tekstu, wyszukiwarkach i narzędziach do analizy danych.

Jak działa algorytm wyszukiwania ciągów

Algorytm wyszukiwania ciągów działa poprzez porównanie każdego znaku przeszukiwanego podciągu ze znakami ciągu głównego. Iteruje po głównym ciągu i sprawdza potencjalne dopasowanie, porównując znaki jeden po drugim. Jeśli zostanie znalezione dopasowanie, wskazuje pozycję początkową podciągu w ciągu głównym.

Zalety i wady algorytmu wyszukiwania ciągów

Zalety:

  • Prosta implementacja: Algorytm jest łatwy do zrozumienia i wdrożenia, dzięki czemu nadaje się do podstawowych zadań wyszukiwania ciągów.
  • Zastosowanie w różnych scenariuszach: Algorytm ten może być używany w szerokim zakresie zastosowań obejmujących wyszukiwanie określonych wzorców w danych tekstowych.

Niedogodności:

  • Nieefektywny w przypadku dużych tekstów: w najgorszym przypadku złożoność czasowa algorytmu może stać się wysoka, co czyni go nieefektywnym w przypadku dużych tekstów.
  • Ograniczone dopasowanie wzorca: Podstawowa wersja algorytmu może nie obsługiwać złożonych wymagań dotyczących dopasowywania wzorców.

Przykład i wyjaśnienie

Rozważmy przykład użycia algorytmu wyszukiwania ciągów w celu znalezienia określonego słowa w zdaniu w formacie 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");  
        }  
    }  
}  

W tym przykładzie algorytm wyszukuje podciąg „lis” w podanym tekście. Iteruje po każdym znaku tekstu, porównując go ze znakami podciągu. Po znalezieniu dopasowania algorytm zwraca pozycję początkową podciągu w tekście.

To ilustruje, w jaki sposób algorytm wyszukiwania ciągów może lokalizować podciągi w większych danych tekstowych, co czyni go niezbędną techniką manipulacji i analizy tekstu w Java programowaniu.