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

为什么做的网站预览出来什么都没有校园网站开发的需求和分析

为什么做的网站预览出来什么都没有,校园网站开发的需求和分析,网站升级什么意思,wordpress侧边栏删除目录 一、暴力匹配法动画演示代码实现 二、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/732717/

相关文章:

  • 网站流量如何来网站建设程序
  • 网站做后怎么可以在百度搜索到开篇网络
  • 如何快速开发一个网站wordpress恢复已删除目录
  • 爱站网seo培训建设部监理工程师网站
  • 二七网建站中国做网站最好的企业
  • 自己注册个公司做网站怎么样做网站 域名 服务器的关系
  • 一家公司可以做几个网站网站功能需求用什么做
  • 网站建设与运营的收入来源杭州网站建设外包
  • 企业网站创建的步骤公司网站招聘的作用
  • 网站有备案需要什么手续wordpress 标签数量
  • 网站标题作弊网站建设的所有权
  • 太仓网站建设有限公司台州网站建设制作
  • 免费制作主图的网站wordpress文章
  • 做百度网站哪家公司好wordpress文件缺失
  • 珠海市区工商年报在哪个网站做wordpress首页只显示一篇文章
  • 公司网站版面怎么设计徐州的网站设计
  • 做网站需要用什么语言开发网站建设 东道网络
  • 济南 网站建设那家好智能创作平台
  • 一个网站是如何建设国外html5模板网站
  • 做奥网站自己动手做网站教程
  • 站长工具seo综合查询可以访问久久建筑网cad
  • flash网站读条怎么做东莞互联网
  • 没有任何收录的网站做SEM有用吗珠海注册公司
  • 网站模板去哪下载2023企业所得税300万以上
  • 常见的网站结构类型网站页面如何设计
  • 户外商品网站制作关于网站建设的投标书
  • 自己做网站还是用博客住房和城乡建设部标准定额网站
  • 牛商网营销型网站建设营口建设工程质量监督站网站
  • 上海网站建设制作公网站seo搜索引擎优化怎么做
  • 深圳优化网站公司哪家好巴中城乡建设官方网站