Introduction
Imagine you have a long text and want to find if a smaller word or pattern appears inside it. This problem of finding patterns inside text is very common in searching documents, DNA analysis, and even spell checking.
Imagine looking for a word in a book by checking every letter one by one from the start of each page. Sometimes you find the word quickly, other times you have to keep looking. Finding faster ways to skip pages or letters saves time.
Text: ┌─────────────────────────────┐
│ T h i s i s a t e x t │
└─────────────────────────────┘
Pattern: ┌─────────┐
│ t e x t │
└─────────┘
Matching process:
Position 0: T vs t (no match)
Position 10: t vs t (match start)
→ Pattern found starting at position 10def naive_string_match(text: str, pattern: str) -> list[int]: positions = [] n, m = len(text), len(pattern) for i in range(n - m + 1): if text[i:i+m] == pattern: positions.append(i) return positions # Example usage text = "this is a text" pattern = "text" print(naive_string_match(text, pattern))