From a3083eca604f15d12c9a700cd4356494a3f69600 Mon Sep 17 00:00:00 2001 From: Karthikn-VR Date: Tue, 26 Aug 2025 21:00:25 +0530 Subject: [PATCH] feat: add Naive Pattern Search algorithm This commit adds the Naive Pattern Search algorithm implementation in Java. The algorithm scans the text from left to right and checks each substring of length m (pattern length) to find matches. - New class: NaivePatternSearch.java - Provides `search(String text, String pattern)` method returning all match indices - Includes a sample main() for demonstration Time Complexity: O(n * m) Space Complexity: O(1) --- .../strings/NaivePatternSearch.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/main/java/com/thealgorithms/strings/NaivePatternSearch.java diff --git a/src/main/java/com/thealgorithms/strings/NaivePatternSearch.java b/src/main/java/com/thealgorithms/strings/NaivePatternSearch.java new file mode 100644 index 000000000000..0708007537e6 --- /dev/null +++ b/src/main/java/com/thealgorithms/strings/NaivePatternSearch.java @@ -0,0 +1,33 @@ +package strings; + +import java.util.ArrayList; +import java.util.List; + +/** + * Naive Pattern Searching algorithm. + * Reference: https://en.wikipedia.org/wiki/String-searching_algorithm#Na%C3%AFve_string_search + */ +public class NaivePatternSearch { + + /** + * Finds all occurrences of a pattern in a given text using + * the naive substring search algorithm. + * + * @param text The text in which to search. + * @param pattern The pattern to search for. + * @return List of starting indices where the pattern is found. + */ + public static List search(String text, String pattern) { + List result = new ArrayList<>(); + int n = text.length(); + int m = pattern.length(); + + for (int i = 0; i <= n - m; i++) { + String sub = text.substring(i, i + m); + if (sub.equals(pattern)) { + result.add(i); + } + } + return result; + } +}