【数据结构与算法】动画:什么是 BF 算法 ?
生活随笔
收集整理的這篇文章主要介紹了
【数据结构与算法】动画:什么是 BF 算法 ?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文是圖解?什么是 BF算法、KMP算法、BM算法 三部曲之一。
定義
Brute-Force算法,簡稱為 BF算法,是一種簡單樸素的模式匹配算法,常用于在一個主串 S 內查找一個子串 T 的出現位置。
它的核心思想與操作是:
動畫演示
圖片演示
代碼描述
int?index(?String?S,?String?T,?int?pos?){????int?i?=?pos;????????????????????????//?i?表示主串?S?中當前位置下標????int?j?=?1;????????????????????????????//?j?表示子串?T?中當前位置下標????while(?i?<=?S[0]?&&?j?<=?T[0]?){????//?i?或?j?其中一個到達尾部則終止搜索????????if(?S[i]?==?T[i]?){?????????????//?若相等則繼續進行下一個元素匹配????????????i++;????????????j++;????????}else?{?????????????????????????//?若匹配失敗則?j?回溯到第一個元素重新匹配????????????i?=?i?-?j?+?2;??????????????//?將?i?重新回溯到上次匹配首位的下一個元素????????????j?=?1;????????}????}????if(?j?>?T[0]?){????????return?i?-?T[0];????}else?{????????return?0;????}}????int?i?=?pos;????????????????????????//?i?表示主串?S?中當前位置下標
????int?j?=?1;????????????????????????????//?j?表示子串?T?中當前位置下標
????while(?i?<=?S[0]?&&?j?<=?T[0]?){????//?i?或?j?其中一個到達尾部則終止搜索
????????if(?S[i]?==?T[i]?){?????????????//?若相等則繼續進行下一個元素匹配
????????????i++;
????????????j++;
????????}else?{?????????????????????????//?若匹配失敗則?j?回溯到第一個元素重新匹配
????????????i?=?i?-?j?+?2;??????????????//?將?i?重新回溯到上次匹配首位的下一個元素
????????????j?=?1;
????????}
????}
????if(?j?>?T[0]?){
????????return?i?-?T[0];
????}else?{
????????return?0;
????}
}
總結
BF算法 在主串和字串匹配失敗時,主串進行的回溯操作會影響效率,回溯之后,主串與字串有些部分比較是沒有必要的。這種簡單的丟棄前面的匹配信息是 BF算法 之所以效率低效的一個重要因素。
KMP算法、BM算法 將在后續分別進行詳細介紹,敬請關注。
總結
以上是生活随笔為你收集整理的【数据结构与算法】动画:什么是 BF 算法 ?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 别眨眼!AI 通过自学秒解魔方,比人类纪
- 下一篇: 他修复了程序员吃饭的bug,估值已超过1