当前位置: 首页 > news >正文

wordpress置顶文章 调用xp优化大师

wordpress置顶文章 调用,xp优化大师,烟台seo,为什么说做网站赚钱KMP数组存的是什么 对于一个字符串 b,下标从1开始。 则kmp[i]表示 以i结尾的连续子串 s的前缀的最大值(等价于前缀最大结尾处) 如何求KMP 假设 i 以前的KMP都被求出来了。 j 表示上一个字符可以成功匹配的长度(等价于下标) …

KMP数组存的是什么

对于一个字符串 b,下标从1开始。

则kmp[i]表示 以i结尾的连续子串 = s的前缀的最大值(等价于前缀最大结尾处)

如何求KMP

假设 i 以前的KMP都被求出来了。

j 表示上一个字符可以成功匹配的长度(等价于下标)

如果b[j+1] != b[i]下一个位置匹配不上(即不能成为前缀)

则,让j = kmp[j] 即成为以j结尾的 连续子串 的 最长前缀 尾部的下标

退出循环后,若还能匹配上则j++(本质是,加上i的贡献。因为j = 0时可能匹配不上)

然后让kmp[i] = j即可。

运用kmp

和求kmp差不多,如果匹配不上,求让a[i]和以j结尾的连续子串的最长前缀匹配。(放宽要求)

算法正确性证明

用哲学的话来说就是,每一次失败都会让我变得更强大。

当匹配不上时,匹配串b至少会前移1位,由指针的思想。O(n)可证。

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+7;
int kmp[N];
string a,b;
int j;
int main(){cin>>a>>b;a = " "+a;b = " "+b;for(int i = 2;i < b.size();i++){while(j&&b[j+1] != b[i]){j = kmp[j];}if(b[j+1] == b[i])j++;kmp[i] = j;}j = 0;for(int i = 1;i < a.size();i++){while(j&&a[i] != b[j+1]){j = kmp[j];}if(b[j+1] == a[i])j++;if(j == b.size()-1){cout<<i-(b.size()-1)+1<<endl;j=kmp[j];}}for (int i=1;i < b.size();i++)cout<<kmp[i]<<" ";return 0;
}

 

http://www.tj-hxxt.cn/news/28209.html

相关文章:

  • 免费做链接的网站中山360推广
  • seo快速培训短视频seo厂家
  • 用java做音乐网站推广平台有哪些?
  • vivo官方网站进入口碑营销的重要性
  • 画册设计要求四川最好的网络优化公司
  • 网站设计建seo查询系统
  • 电子商务平台经营者对于竞价排名的商品或服务网站优化推广
  • 织梦做网站利于优化北京网站建设公司优势
  • 网站建设邮箱搜索引擎优化的目的是
  • 网站建设多少钱合适google广告投放技巧
  • 如何网上外贸接单整站排名优化品牌
  • 网站seo新手沈阳网站制作优化推广
  • 视频网站开发防止盗链产品销售方案与营销策略
  • 网站权重对应的等级服装营销方式和手段
  • 两栏式设计网站百度排名竞价
  • 东莞网站设计公司友情链接网自动收录
  • 宿迁做网站电话网站推广软件免费版大全
  • 如何拥有一个自己的网站2022最近十大的新闻热点
  • 网站建设预算策划百度贴吧广告投放价格
  • 部队网站建设设计网站的建设流程
  • 免费素材网站哪个最好杭州网站设计
  • 刚做的网站怎么游戏代理平台一天结一次
  • 网站建设公司的工资在线葡京在线葡京
  • 外贸soho怎么做网站公众号推广接单平台
  • 哪些网站可以接兼职做如何联系百度人工客服电话
  • 手机端网站如何做老哥们给个关键词
  • 免费搭建微信网站多少钱怎么做电商卖东西
  • 哈尔滨网站推广公司清远今日头条新闻
  • 工业互联网建设嘉兴seo网络推广
  • 新安县住房和城乡建设局网站百度热搜榜排行