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

怎样做网站广告上海房产网安居客

怎样做网站广告,上海房产网安居客,有哪些免费推广软件,个人公众号如何推广目录 一、暴力匹配法动画演示代码实现 二、KMP算法的概念三、KMP算法的应用题目代码实现 一、暴力匹配法 动画演示 时间复杂度为&#xff1a; O ( m ∗ n ) O(m * n) O(m∗n) 代码实现 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std;int…

目录

  • 一、暴力匹配法
    • 动画演示
    • 代码实现
  • 二、KMP算法的概念
  • 三、KMP算法的应用
    • 题目
    • 代码实现


一、暴力匹配法

动画演示

暴力遍历法
时间复杂度为: O ( m ∗ n ) O(m * n) O(mn)

代码实现

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;int find(string& s1, string& s2)
{int n = s1.size();int m = s2.size();for (int i = 0; i <= n - m; ++i){int cp = i, j = 0;while (cp < n && s1[cp] == s2[j]) cp++, j++;if (j == m - 1) return cp;}return -1;
}
int main()
{string txt = "ABCDABCDABDE";string pat = "ABCDABD";cout << find(txt, pat) << endl;return 0;
}

二、KMP算法的概念

K M P KMP KMP 算法,通常用于在一个 文本字符串 S S S 中查找一个 匹配串 P P P出现位置出现次数

KMP算法

KMP算法首先对模式串进行预处理,计算出Next数组。Next数组的每个元素表示当前位置之前的子串中,最长的相等的前缀和后缀的长度。然后,在匹配过程中,使用Next数组来指导模式串的移动。

当模式串与文本串的某个字符不匹配时,根据Next数组的值确定模式串的移动位置,而不是从头开始逐个字符地比较。通过合理地利用Next数组,KMP算法能够有效地避免不必要的比较操作,从而提高匹配的效率。

难点在于通过预处理得到Next数组 及其 回退处理的操作

相关求解视频:

KMP查找算法


三、KMP算法的应用

题目

题目描述:
给定一个字符串 S S S,以及一个模式串 P P P,所有字符串中只包含大小写英文字母以及阿拉伯数字。

模式串 P P P 在字符串 S S S 中多次作为子串出现。

求出模式串 P P P 在字符串 S S S 中所有出现的位置的起始下标。

输入格式:
第一行,输入整数 n n n,表示字符串 P P P 的长度。

第二行,输入字符串 P P P

第三行,输入整数 m m m,表示字符串 S S S 的长度。

第四行,输入字符串 S S S

输出格式:
共一行,输出所有出现位置的起始下标(下标从 0 0 0 开始计数),整数之间用空格隔开。

数据范围:
1 ≤ n ≤ 1 0 5 1≤n≤10^5 1n105
1 ≤ m ≤ 1 0 6 1≤m≤10^6 1m106

输入样例:

3
aba
5
ababa

输出样例:

0 2

代码实现

const int N = 1e5 + 10, M = 1e6 + 10;int ne[N];
char s[M];
char p[N];int main()
{cin.tie(nullptr);int n, m;cin >> n;for (int i = 0; i < n; ++i) cin >> p[i];cin >> m;for (int i = 0; i < m; ++i) cin >> s[i];// 创建Next数组// i:当前试图进行匹配的S串字符,j是模板串当前试图与S串i位置进行匹配的字符// j:表示已匹配的长度,一直都在尝试让j位和i位进行匹配,退无可退,无需再退。// i:是从1开始的,因为ne[0]=0,表示第1个不匹配,只能重头开始,不用算for (int i = 1, j = 0; i < n; i++) // j - 前缀末,i - 后缀末{while (j && p[i] != p[j]) j = ne[j - 1];if (p[i] == p[j]) j++;ne[i] = j;}for (int i = 0, j = 0; i < m; i++){while (j && s[i] != p[j]) j = ne[j - 1];if (s[i] == p[j]) j++;if (j && j == n){printf("%d ", i + 1 - n);j = ne[j - 1];}}return 0;
}
http://www.yayakq.cn/news/323328/

相关文章:

  • 玉溪市住房和建设局公布网站wordpress上传源码
  • 网站建设任务和标准手机排行榜2022年
  • 哪个网站做译员好九龙坡网站建设公司
  • 深圳网站制作要多少钱网站开发长期合作
  • 咨询类网站建设如何在百度推广
  • 电子商务网站建设期末试题08答案中国企业网官方网站查询
  • 电商网站制作价格微网站的建设模板有哪些
  • 网站做的支付宝接口吗服装生产erp管理软件
  • 土特产网站建设事业计划书wordpress美食模板
  • 宝塔怎么做网站的301跳转网站服务器哪个好
  • 做网站用的腾讯云服务器软件合集
  • 小游戏网站建设全球广告公司排名
  • 网站开发主要工作内容哪些行业需要网站有哪些内容
  • 中小企业网站设计总结企业网站建设该怎么描述
  • cms 网站wap网站制作方案
  • 乌海网站开发社交网站 建站
  • 大型网站多少钱wordpress文章版权信息
  • 网站中的下拉菜单做网站设计的需要什么材料
  • 网站建设调查重庆微网站开发公司
  • ie 10 常用网站wordpress 前端发帖
  • 网站建设的参考文献温州网站制作价格
  • 萧山建设信用网站上海建设项目环保验收公示网站
  • 织梦门户网站源码下载搜素引擎优化
  • 规范网站建设情况的报告苏州园区租房
  • 浙江网站建设公司地址互联网设计师leader
  • 深圳营销型网站建设公司选择哪家好百度网站快速优化
  • 传媒公司网站建设思路微网站 举例
  • 泉州网站页面设计公司做网站工资年新多少在广东
  • 建设企业网站的时间网站代理访问是什么意思
  • php户外运动产品企业网站源码科技公司名字大全参考