Napisz program w Java szukający wzorca w zdaniu. Program wyszukuje wzorca za pomocą dwóch metod: 1. porównuje wyrazy za pomocą funkcji stringowej equals, 2. metoda sprawdza czy znaki kolejne wyrazu są takie same jak znaki kolejne wzorca. Obie metody wyświetlają informacje w postaci czy wzorzec istnieje oraz ile razy np. "True.3" (typy boolean oraz int).
Odpowiedź:
import java.util.StringTokenizer;
public class PatternSearch {
public static void main(String[] args) {
String sentence = "To jest testowy tekst do wyszukania wzorca";
String pattern = "tekst";
System.out.println("Method 1: " + method1(sentence, pattern));
System.out.println("Method 2: " + method2(sentence, pattern));
}
public static String method1(String sentence, String pattern) {
StringTokenizer tokenizer = new StringTokenizer(sentence);
int count = 0;
while (tokenizer.hasMoreTokens()) {
String word = tokenizer.nextToken();
if (word.equals(pattern)) {
count++;
}
}
return (count > 0) ? "True." + count : "False.0";
}
public static String method2(String sentence, String pattern) {
int n = sentence.length();
int m = pattern.length();
int count = 0;
for (int i = 0; i <= n - m; i++) {
int j;
for (j = 0; j < m; j++) {
if (sentence.charAt(i + j) != pattern.charAt(j)) {
break;
}
}
if (j == m) {
count++;
}
}
return (count > 0) ? "True." + count : "False.0";
}
}