Eilučių paieškos (String Search) algoritmas Java

Styginių paieškos algoritmas yra pagrindinė Java programavimo technika, naudojama ieškant konkrečios poeilutės didesnėje eilutėje. Šis algoritmas plačiai naudojamas įvairiose teksto apdorojimo programose, įskaitant teksto redaktorius, paieškos variklius ir duomenų analizės įrankius.

Kaip veikia eilutės paieškos algoritmas

Eilučių paieškos algoritmas veikia lygindamas kiekvieną ieškomos poeilutės simbolį su pagrindinės eilutės simboliais. Jis kartojasi per pagrindinę eilutę ir tikrina galimą atitiktį, lygindamas simbolius po vieną. Jei randama atitiktis, ji nurodo pradinę poeilutės poziciją pagrindinėje eilutėje.

Styginių paieškos algoritmo privalumai ir trūkumai

Privalumai:

  • Paprastas įgyvendinimas: algoritmą lengva suprasti ir įgyvendinti, todėl jis tinka pagrindinėms eilučių paieškos užduotims.
  • Taikoma įvairiems scenarijams: šis algoritmas gali būti naudojamas įvairiose programose, kurios apima konkrečių šablonų paiešką teksto duomenyse.

Trūkumai:

  • Neefektyvus dideliems tekstams: Blogiausiu atveju algoritmas gali būti sudėtingas, todėl jis neveiksmingas dideliems tekstams.
  • Ribotas šablono atitikimas: pagrindinė algoritmo versija gali neatitikti sudėtingų modelių atitikties reikalavimų.

Pavyzdys ir paaiškinimas

Panagrinėkime pavyzdį, kaip naudoti eilutės paieškos algoritmą, norint rasti konkretų žodį sakinyje 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");  
        }  
    }  
}  

Šiame pavyzdyje algoritmas ieško poeilutės „lapė“ nurodytame tekste. Jis kartoja kiekvieną teksto simbolį, lygindamas jį su poeilutės simboliais. Kai randama atitiktis, algoritmas grąžina pradinę eilutės poziciją tekste.

Tai iliustruoja, kaip eilučių paieškos algoritmas gali rasti poeilutes didesniuose teksto duomenyse, todėl tai yra esminė teksto manipuliavimo ir analizės technika programuojant Java.