数据结构-4.2串、数组和广义表
前言-数据结构
数据结构是需要反复咀嚼,不管什么时候都可以重中获取现在在开发中的遇到的问题答案。
串的模式匹配-就是查找S中,有没有T这个子串
BF算法
-
例子
-
A i = 3,j = 3失败,i回溯到2,j回溯到1
-
B i = 2,j=1失败
-
C
-
D
-
总结
-
在串S和T中设比较的起始下标i和j,不从0号房间开始,因为0号是放的字符长度
-
循环知道S或T的所有字符均比较完
- 如果s[I] = t[j] 继续比较S T的下一个字符
- 否则,将i和j回溯,准备下一趟比较
-
如果T中所有字符均比较完,则匹配成功,返回匹配成功的那个下标;否则,匹配失败,返回0.
-
算法最好的情况
- 设串S长度为n,串T长度为m,在匹配成功的情况下,考虑两种极端情况:
情况1:最好情况,即不成功匹配都发生在串T的第1个字符。
设匹配成功发生在si,处,则在i-1趟不成功的匹配中共比较了i-1次,第i趟成功的匹配共比较了m次,
比较了m次,所以总共比较了i-1+m次,所有匹配成功的可能情况共有n-m+1种,则:
- 设串S长度为n,串T长度为m,在匹配成功的情况下,考虑两种极端情况:
-
算法最差的情况
- 不成功匹配都发生在串T的最后一个字符