Algoritam pretraživanja niza (String Search) u Java

Algoritam pretraživanja niza temeljna je tehnika u Java programiranju koja se koristi za traženje određenog podniza unutar većeg niza. Ovaj algoritam naširoko se koristi u raznim aplikacijama za obradu teksta, uključujući uređivače teksta, tražilice i alate za analizu podataka.

Kako radi algoritam pretraživanja niza

Algoritam pretraživanja niza funkcionira uspoređujući svaki znak podniza koji se pretražuje sa znakovima glavnog niza. Iterira kroz glavni niz i provjerava potencijalno podudaranje uspoređujući znakove jedan po jedan. Ako se pronađe podudaranje, to označava početnu poziciju podniza unutar glavnog niza.

Prednosti i nedostaci algoritma pretraživanja niza

Prednosti:

  • Jednostavna implementacija: Algoritam je lako razumjeti i implementirati, što ga čini prikladnim za osnovne zadatke pretraživanja nizova.
  • Primjenjivo na različite scenarije: Ovaj se algoritam može koristiti u širokom rasponu aplikacija koje uključuju traženje određenih uzoraka unutar tekstualnih podataka.

Nedostaci:

  • Neučinkovit za velike tekstove: U najgorem slučaju, vremenska složenost algoritma može postati visoka, čineći ga neučinkovitim za velike tekstove.
  • Ograničeno usklađivanje uzorka: osnovna verzija algoritma možda neće podnijeti složene zahtjeve usklađivanja uzorka.

Primjer i objašnjenje

Razmotrimo primjer korištenja algoritma pretraživanja niza za pronalaženje određene riječi u rečenici u 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");  
        }  
    }  
}  

U ovom primjeru, algoritam traži podniz "lisica" unutar zadanog teksta. Iterira kroz svaki znak teksta, uspoređujući ga sa znakovima podniza. Kada se pronađe podudaranje, algoritam vraća početnu poziciju podniza u tekstu.

Ovo ilustrira kako algoritam pretraživanja niza može locirati podnizove unutar većih tekstualnih podataka, što ga čini bitnom tehnikom za manipulaciju tekstom i analizu u Java programiranju.