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]