Naivní algoritmus vyhledávání v textu slouží, jak již název napovídá, k vyhledání výskytu daného vzoru v textu. Algoritmus prochází jak text, tak vzor zepředu a porovnává, jestli jsou totožné (na m místech vzoru). Pokud ano, tak byl výskyt nalezen, pokud ne, tak se vzorem posune o jedno místo doprava a postup se opakuje (dokud algoritmus nenarazí na konec textu). Složitost tohoto postupu je , kde m je délka vzoru a n je délka textu.
Kód
01.
/**
02.
* Naivni algoritmus vyhledavani vzroru v textu
03.
* Slozitost: O(m*n)
04.
* @param text text, ve kterem se bude hledat (delka n)
05.
* @param pattern vzor, ktery bude hledan (delka m)
06.
* @return index prvniho znaku prvniho vyskytu vzoru v danem textu, -1 pokud
07.
* vzor v textu neexistuje
08.
*/
09.
public
static
int
naiveStringSearchAlgorithm(String text, String pattern){
10.
if
(text.length() ==
0
|| pattern.length() ==
0
)
return
-
1
;
11.
12.
OUTER:
13.
for
(
int
i =
0
; i + pattern.length() <= text.length(); i++){
14.
for
(
int
j =
0
; j < pattern.length(); j++){
15.
if
(text.charAt(i + j) != pattern.charAt(j)){
16.
continue
OUTER;
17.
}
18.
}
19.
return
i;
//nalezli jsme
20.
}
21.
return
-
1
;
//nenalezli jsme
22.
}