https://blog.csdn.net/silence401/article/details/77446537

求字符串匹配问题的一种算法,这个大佬写的很详细了

 

这里简单总结一下,个人备忘笔记

 

shift and

令v['a'-'z'][i]=0/1标记模式串的位置i是不是对应字符,是为1,不是为0

然后从目标串的最左边开始一个位置一个位置的看,假设现在到了第x个位置

令tmp[i]表示当前匹配情况,初始全0

若tmp[i]=1,则模式串的前i位前缀 和当前匹配到的第x位的i位后缀 是匹配的

所以若tmp的最后一位是1,表示出现了一个完全匹配

每次怎么更新呢?

用bitset来表示这些0/1

tmp=(tmp<<1|1)&v[c]  c表示目标串的x位置的字符

 

shift or

和上面相反

令v['a'-'z'][i]=0/1标记模式串的位置i是不是对应字符,是为0,不是为1

令tmp[i]表示当前匹配情况,初始全1

所以若tmp的最后一位是0,表示出现了一个完全匹配

tmp=tmp<<1 | v[c]  

相关文章:

  • 2021-07-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-27
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-14
  • 2021-11-25
  • 2022-12-23
  • 2021-07-18
相关资源
相似解决方案