Searching for Patterns の Set 1 (Naive Pattern Searching)

Given a text txt[0..n-1] and a pattern pat[0..m-1], write a function search(char pat[], char txt[]) that prints all occurrences of pat[] in txt[]. You may assume that n > m.

Examples:
1) Input:

  txt[] =  "THIS IS A TEST TEXT"
  pat[] = "TEST"
Output:

Pattern found at index 10
2) Input:

  txt[] =  "AABAACAADAABAAABAA"
  pat[] = "AABA"
Output:

   Pattern found at index 0
   Pattern found at index 9
   Pattern found at index 13
Pattern searching is an important problem in computer science. When we do search for a string in notepad/word file or browser or database, pattern searching algorithms are used to show the search results.
package com.jlu.demo;

public class PatternSearching {

    /**
     * @param args
     */
    public static void main(String[] args) {

        String a=new String("AABAACAADAABAAABAA");
          char[] txt = a.toCharArray();
          String b=new String("AABA");
           char[] pat = b.toCharArray();
           search(txt, pat);

    }


    public static void search(char[] txt,char[] pat)
    {
        int m=pat.length;
        int n=txt.length;


        for(int i=0;i<=n-m;i++)
        {
            int j;

            for(j=0;j<m;j++)
            {

                if(txt[i+j]!=pat[j])
                {
                    break;
                }

            }
            if(j==m)
            {
                System.out.println("Pattern found at index "+i);
            }

        }

    }

}

What is the best case?
The best case occurs when the first character of the pattern is not present in text at all.

txt[] = “AABCCAADDEE”
pat[] = “FAA”
The number of comparisons in best case is O(n).

What is the worst case ?
The worst case of Naive Pattern Searching occurs in following scenarios.
1) When all characters of the text and pattern are same.

txt[] = “AAAAAAAAAAAAAAAAAA”
pat[] = “AAAAA”.
2) Worst case also occurs when only the last character is different.

txt[] = “AAAAAAAAAAAAAAAAAB”
pat[] = “AAAAB”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值