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

内蒙古做网站百度推广和优化哪个好

内蒙古做网站,百度推广和优化哪个好,企业建设微网站的重要性,wordpress阅读数随机题目描述 给出两个字符串 s1​ 和 s2​,若 s1​ 的区间 [l,r] 子串与 s2​ 完全相同,则称 s2​ 在 s1​ 中出现了,其出现位置为 l。 现在请你求出 s2​ 在 s1​ 中所有出现的位置。 定义一个字符串 s 的 border 为 s 的一个非 s 本身的子串…

题目描述

给出两个字符串 s1​ 和 s2​,若 s1​ 的区间 [l,r] 子串与 s2​ 完全相同,则称 s2​ 在 s1​ 中出现了,其出现位置为 l。
现在请你求出 s2​ 在 s1​ 中所有出现的位置。

定义一个字符串 s 的 border 为 s 的一个非 s 本身的子串 t,满足 t 既是 s 的前缀,又是 s 的后缀。
对于 s2​,你还需要求出对于其每个前缀 s′ 的最长 border t′ 的长度。

输入格式

第一行为一个字符串,即为 s1​。
第二行为一个字符串,即为 s2​。

输出格式

首先输出若干行,每行一个整数,按从小到大的顺序输出 s2​ 在 s1​ 中出现的位置。
最后一行输出 ∣s2​∣ 个整数,第 i 个整数表示 s2​ 的长度为 i 的前缀的最长 border 长度。

输入输出样例

输入 #1复制运行

ABABABC
ABA

输出 #1复制运行

1
3
0 0 1 

说明/提示

样例 1 解释

对于 s2​ 长度为 3 的前缀 ABA,字符串 A 既是其后缀也是其前缀,且是最长的,因此最长 border 长度为 1。

数据规模与约定

本题采用多测试点捆绑测试,共有 3 个子任务

  • Subtask 1(30 points):∣s1​∣≤15,∣s2​∣≤5。
  • Subtask 2(40 points):∣s1​∣≤104,∣s2​∣≤102。
  • Subtask 3(30 points):无特殊约定。

对于全部的测试点,保证 1≤∣s1​∣,∣s2​∣≤106,s1​,s2​ 中均只含大写英文字母。

解题思路:

这里用的是kmp算法。也就是先确定s2的next数组,再在s1里面看有无s2字符串【kmp算法的优点在于它是一个线性查找O(m+n)】

先确定next数组:

vector<long long> build_next(string b){vector<long long> nexts;nexts.push_back(0);long long i=0,j=1;for(;j<b.size();){if(b[j]==b[i]){i++;j++;nexts.push_back(i);}else{if(i==0){j++;nexts.push_back(i);}else{i=nexts[i-1];}}}return nexts;
}

 再跟据next数组线性查找s2字符串:

vector<long long> kmp(string a,string b){vector<long long> nexts=build_next(b);vector<long long> array;long long i=0,j=0,h=b.size();for(;j<a.size();){if(a[j]==b[i]){i++;j++;}else{if(i==0){j++;}else{i=nexts[i-1];}}if(i==h){array.push_back(j-i+1);i=nexts[i-1];}}return array;
}

总体代码:

#include<bits/stdc++.h>
using namespace std;
vector<long long> build_next(string b){vector<long long> nexts;nexts.push_back(0);long long i=0,j=1;for(;j<b.size();){if(b[j]==b[i]){i++;j++;nexts.push_back(i);}else{if(i==0){j++;nexts.push_back(i);}else{i=nexts[i-1];}}}return nexts;
}
vector<long long> kmp(string a,string b){vector<long long> nexts=build_next(b);vector<long long> array;long long i=0,j=0,h=b.size();for(;j<a.size();){if(a[j]==b[i]){i++;j++;}else{if(i==0){j++;}else{i=nexts[i-1];}}if(i==h){array.push_back(j-i+1);i=nexts[i-1];}}return array;
}
int main(){string s1,s2;
//	getline(cin,s1);
//	getline(cin,s2);cin>>s1>>s2;vector<long long> array,array1;array=kmp(s1,s2);if(array.size()){for(long long i=0;i<array.size();i++){cout<<array[i]<<endl;}}array1=build_next(s2);for(long long i=0;i<array1.size();i++){cout<<array1[i]<<" ";}return 0;
}

 【!!!!这里string字符串输入只能用cin,不要用getline,具体我也不知道为什么有知道欢迎在评论区中解答!!!!]

http://www.dtcms.com/wzjs/260484.html

相关文章:

  • 网站怎么靠前百度广告怎么投放
  • 无锡做网站公司多少钱搜索引擎优化工具
  • 建设网购网站个人如何加入百度推广
  • wordpress视屏类型不受支持北京网站seo服务
  • 网站建设内容保障制度苏州seo关键词优化外包
  • 浏览器打开是2345网址导航搜索引擎优化的方法有哪些?
  • 网站公司建设个服务号多少钱济南全网推广
  • 对接公众号的网站怎么做网络营销的推广方法有哪些
  • 我的网站域名找网站设计公司
  • 泗县建设银行网站鹤壁seo
  • 我想自己做网站吗营销公司
  • 优秀设计师网站求职seo推荐
  • 关于网站首页建设的文章文章发布在哪个平台好
  • 怎么做外语网站nba最新交易汇总实时更新
  • wap电影网站建设郑州中原区最新消息
  • 大良做网站品牌软文范文
  • 外贸业务员怎么开发客户seo技术培训沈阳
  • 全国被执行人名单查询seo排名点击软件运营
  • 山西龙采网站建设合同skr搜索引擎入口
  • 网站设计的知识技能网站建成后应该如何推广
  • 宝塔建站网址淘宝seo排名优化
  • 政府网站如何建设好爱链网中可以进行链接买卖
  • 网站主机建设方案百度免费
  • 网络品牌网站建设百度人工在线客服
  • 专业网站建设找哪家公司网络营销有哪些模式
  • 建零售网站还是外贸seo推广
  • 网站开发功能模块出错cps推广平台
  • 淘宝网站制作教程新媒体销售好做吗
  • 广州 营销型网站建设公司的搜索引擎优化
  • 网站开发费算无形资产吗关键词优化流程