《数据结构与算法》之brute-force算法(14)

在字符串匹配问题中,我们期待察看S串中是否含有串T(模式串)。其中串S被称为主串,串T被称为子串。

如果在主串中查找到子串,则称为模式匹配成功,返回模式串的第一个字符在主串中出现的位置。

如果在主串中未找到子串,则称为模式匹配失败,返回-1

 

也称简单匹配算法,其基本思路是:从目标串s=s0s1sn-1”的第一个字符开始和模式串t=t0t1tm-1”中的第一个字符比较,若相等,则继续逐个比较后续字符,否则,从目标串s的第2个字符开始重新与模式串t的第一个字符进行比较,依次类推,若从目标串s的第i个字符开始,每个字符依次和模式串t中的对应字符相等,则匹配成功,该算法返回i;否则匹配失败,返回-1

 

当然了这个算法是很简单了:

package org.lixiyuan.bruteforce;

 

public class BruteForece {

    public static int bruteforce(String old,String sub){

       int i=0,j=0,index=-1;

       while(i<old.length()&&j<sub.length()){

           if(old.charAt(i)==sub.charAt(j)){

              i++;

              j++;

             

           }else{

              i=i-j+1;

              j=0;

           }

          

       }

       if(j==sub.length()){

           index=i-j;

          

       }

       return index;

      

    }

   

    public static void main(String args[]){

       String a="aaaaaab";

       String b="aab";

       int c=bruteforce(a,b);

       System.out.println(c);

      

      

    }

 

}

测试结果:4

你可能感兴趣的:(《数据结构与算法》之brute-force算法(14))