C# Program for Naive algorithm for Pattern Searching
Last Updated :
25 Oct, 2023
Improve
Write a C# program for a given text string with length n and a pattern with length m, the task is to print all occurrences of the pattern in text.
Note: You may assume that n > m.
Examples:
Input: text = “THIS IS A TEST TEXT”, pattern = “TEST”
Output: Pattern found at index 10Input: text = “AABAACAADAABAABA”, pattern = “AABA”
Output: Pattern found at index 0, Pattern found at index 9, Pattern found at index 12
C# Program for Naive Pattern Searching Algorithm:
Slide the pattern over text one by one and check for a match. If a match is found, then slide by 1 again to check for subsequent matches.
// C# program for Naive Pattern Searching
using System;
class GFG {
public static void search(String txt, String pat)
{
int M = pat.Length;
int N = txt.Length;
/* A loop to slide pat one by one */
for (int i = 0; i <= N - M; i++) {
int j;
/* For current index i, check for pattern
match */
for (j = 0; j < M; j++)
if (txt[i + j] != pat[j])
break;
// if pat[0...M-1] = txt[i, i+1, ...i+M-1]
if (j == M)
Console.WriteLine("Pattern found at index "
+ i);
}
}
// Driver's code
public static void Main()
{
String txt = "AABAACAADAABAAABAA";
String pat = "AABA";
// Function call
search(txt, pat);
}
}
// This code is Contributed by Sam007
38
1
// C# program for Naive Pattern Searching
2
using System;
3
4
class GFG {
5
6
public static void search(String txt, String pat)
7
{
8
int M = pat.Length;
9
int N = txt.Length;
10
11
/* A loop to slide pat one by one */
12
for (int i = 0; i <= N - M; i++) {
13
int j;
14
15
/* For current index i, check for pattern
16
match */
17
for (j = 0; j < M; j++)
18
if (txt[i + j] != pat[j])
19
break;
20
21
// if pat[0...M-1] = txt[i, i+1, ...i+M-1]
22
if (j == M)
23
Console.WriteLine("Pattern found at index "
24
+ i);
25
}
26
}
27
28
// Driver's code
29
public static void Main()
30
{
31
String txt = "AABAACAADAABAAABAA";
32
String pat = "AABA";
33
34
// Function call
35
search(txt, pat);
36
}
37
}
38
// This code is Contributed by Sam007
Output
Pattern found at index 0 Pattern found at index 9 Pattern found at index 13
Time Complexity: O(N2)
Auxiliary Space: O(1)
Complexity Analysis of Naive algorithm for Pattern Searching:
Best Case: O(n)
- When the pattern is found at the very beginning of the text (or very early on).
- The algorithm will perform a constant number of comparisons, typically on the order of O(n) comparisons, where n is the length of the pattern.
Worst Case: O(n2)
- When the pattern doesn’t appear in the text at all or appears only at the very end.
- The algorithm will perform O((n-m+1)*m) comparisons, where n is the length of the text and m is the length of the pattern.
- In the worst case, for each position in the text, the algorithm may need to compare the entire pattern against the text.
- Naive algorithm for Pattern Searching
Please refer complete article on Naive algorithm for Pattern Searching for more details!