Open In App

C# Program for Naive algorithm for Pattern Searching

Last Updated : 25 Oct, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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 10

Input:  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#




// 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


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!



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads