經典算法—BF算法(字符串匹配)


前言

字符串的匹配算法也是很經典的一個算法,在面試的時候常常會遇到,而BF算法是字符串模式匹配中的一個簡單的算法

1,什么是BF算法

BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,思想簡單,代碼結構也簡單

BF算法的思想就是將目標串S的第一個字符與模式串T的第一個字符進行匹配,若相等,則繼續比較S的第二個字符和 T的第二個字符;若不相等,則比較S的第二個字符和T的第一個字符,依次比較下去,直到得出最后的匹配結果。

2,代碼實現

分析:

要完成對於所有字符的匹配工作,可以遍歷母串,並逐個與子串比較,若相同,則字串匹配位后移,若不成功,歸零,當匹配成功長度等於字串長度,結束遍歷,返回結果

代碼:

void Get(string a,string b)
{
    int i,j=0;
    for(i=0;i<a.length();i++)
    {
        if(a[i]==b[j])  //若匹配成功,則字串匹配字符后移一位
        	j++;  
        else        //若不成功,字串重新從第一個開始,母串回溯
       	{
       		i=i-j+1;
       		j=0;
       	}	        
        if(j==b.length())   
        {
            cout<<"Yes Ok";
            return;
        }
    }
    if(j!=b.length()) cout<<"Sorry"
}

3,算法的復雜度

若母串長度位m,字串長度位n,則:

最好情況平均時間復雜度位:O(m+n)
最壞情況平均時間復雜度位:O(m*n)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM