【算法】蛮力法——串匹配问题(BF算法)

一般在解决串匹配的问题的时候,一般都是使用BF算法、KMP算法和BM算法。今天就来讲讲什么是BF算法。

#BF算法:

##基本思想:
1.从主串S的第一个字符开始和模式T的第一个字符进行比较;  
2.若相等,则继续比较两者的后续字符;  
3.若不相等,则从主串S的第二个字符开始和模式T的第一个字符进行比较;  
4.重复上述过程,若T中的字符全部比较完毕,则说明本趟匹配成功;  
5.若最后一轮匹配的起始位置是n-m+2,则主串S中剩下的字符不足够匹配整个模式T,匹配失败(n:主串长度,m:子串长度)

##定义:  
BF(Brute-Force)算法,是我们常用的做传匹配的算法,即在一个主串s里面查找一个子串s在t里的位置。这个算法称为朴素的模式匹配算法,简称BF算法。

###例子:
主串s=“ababcabcacbab”   
子串t=“abcac”

第一趟 ababcabcacbab    
                  abcac

第二趟 abbabcabcacbab    
             abcac

第三趟 ababcabcacbab    
                      abcac

第四趟 ababcabcacbab    
                        abcac

第五趟 ababcabcacbab    
                          abcac

第六趟 ababcabcacabcacbab    
                           abcac

###算法如下:

    public static int bruteforce(String s,String t){
        int s1 = s.length();//目标字符串的长度
        int s2 = t.length();//模式串的长度

        for(int i=0;i

总结: 
这是一个比较简单的蛮力法,但是由例子可以看出来有很多步骤我们是可以跳过的。这就引申到了优化的问题~也就是KMP或者是BM算法了。

你可能感兴趣的:(算法)