字符串匹配算法---BF
Brute-Force算法,简称BF算法,是一种简单朴素的模式匹配算法,常用语在一个主串string 内查找一个子串 pattern的出现位置。
核心思想:
i 遍历主串string
i 每自增一次,内层循环用 j 遍历子串 pattern ,同时判断 patter[j] == string[i+j]
若条件成立,j 自增
否则退出循环
判断 j 是否遍历到 pattern尾部
若 j == strlen(pattern),匹配成功,return i;
若 j != strlen(pattern), 匹配失败 , i 自增继续从str的下一个字符一个一个匹配。
i 遍历完主串string程序仍没有结束,说明没有找到子串pattern,return -1
比如要在string串aaacaaab中查找pattern子串aaab:
代码实现:
int BF(char pattern[], char str[]) { for(int i = 0; i < strlen(str); ++i){ // i遍历主串str int j; for(j = 0; pattern[j] && str[i+j] == pattern[j]; ++j); // j遍历子串pattern,pattern[j] != str[i+j]时结束循环 if(!pattern[j]){ // j匹配至pattern尾部,匹配成功 return i; } } return -1; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?