待解决的问题
有一个字符串s,和一个模式串p,查找p出现在s中的位置。
解决思路
- s的长度为n,P的长度为m,必须满足n>=m;
- 从s的起始位置开始匹配,记录当前位置i,校验s的i->i+m子串与p是否相等,否则s位置前移1(i = i+1)继续匹配,一直尝试到n-m位置;
匹配流程
GoLang实现源码:
func ForceSearch(src []byte, patten []byte) int {
n := len(src)
m := len(patten)
for i := 0; i <= n-m; i++ {
j := 0
for ; j < m; j++ {
if src[i + j] != patten[j] {
break
}
}
if j == m {
return i
}
}
return -1
}
算法复杂度
暴力匹配算法是思路简单,时间复杂度O(n*m)。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。