数据结构-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种,则:
      在这里插入图片描述
  • 算法最差的情况

    • 不成功匹配都发生在串T的最后一个字符在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41732253/article/details/109525316