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

天津市开发区建设管理局网站中英文网站如何建设

天津市开发区建设管理局网站,中英文网站如何建设,上传网站到虚拟主机,没有充值入口的传奇游戏KMP 理论 KMP算法的核心是构建一个部分匹配表,也称为前缀表。这个表记录了模式串中每个位置之前的最长公共前缀和后缀的长度。例如,对于模式串"ababaca",其部分匹配表如下: 位置0123456字符ababaca最长公共前后缀长度…

KMP

理论

KMP算法的核心是构建一个部分匹配表,也称为前缀表。这个表记录了模式串中每个位置之前的最长公共前缀和后缀的长度。例如,对于模式串"ababaca",其部分匹配表如下:

位置0123456
字符ababaca
最长公共前后缀长度0012301
模式串前缀后缀最长公共前缀和后缀
a0
abab0
abaa, abba, a1
ababa, ab, ababab, ab, b2
ababaa, ab, aba, ababbaba, aba, ba, a3
ababaca, ab, aba, abab, ababababac, abac, bac, ac, c0
ababacaa, ab, aba, abab, ababa, ababacbabaca, abaca, baca, aca, ca, a1

这里的前缀是指从字符串开头开始,不包含末尾字符的所有子串;后缀则是从字符串末尾开始,不包含首位字符的所有子串。最长公共前缀和后缀指的是前缀和后缀中相同且长度最长的子串的长度。

例题

幸运字符串
问题描述
给定一个长度为 n 的字符串 S ,幸运字符串的定义如下:

  1. 该字符串为 S 的一个前缀字符串 。
  2. 该字符串在 S 中至少出现过 2 次 。
    现在要你求出长度最大的幸运字符串 。
    输入格式
    输入第一行,包含一个整数 n,表示字符串的长度 。
    输入第二行,长度为 n且由小写字母组成的字符串 。
    输出格式
    输出仅一行,包含一个整数,表示长度最大的幸运字符串的长度 。
    输入案例
7
ababaca

样例输出

3

说明
前缀 aba 在 S中出现了两次,由此答案是 3。
评测数据规模
对于 50% 的评测数据,1≤n≤2×1e3
对于 100% 的评测数据,1≤n≤2×1e5。

//本题考察对next数组含义的理解
//next[i]表示以第i个字符结尾的字符串的最长相等前后缀的长度
//本题所求的最长幸运字符串,其长度实际上就是最长相等前后缀的长度
//故本题只需要对输入的字符串求next数组,比较其中的最大值即可 
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 100;
char T[N];
int nex[N];void get_next(int n, char* S)//求S的next数组 
{nex[0] = nex[1] = 0;for (int i = 2, j = 0; i <= n; i++){while (j && S[j + 1] != S[i]) {j = nex[j];}if (S[i] == S[j + 1]) {j++;}nex[i] = j;}
}int main()
{int n;cin >> n;cin >> T + 1;get_next(n, T);//对输入的字符串计算next数组 int ans = 0;for (int i = 1; i <= n; i++)//比较得出next数组中的最大值 {ans = max(ans, nex[i]);}cout << ans << endl;return 0;
}

Manacher

理论

01 回文串的性质

  • 回文串:类似ABA,ABCBA,AABBAA 等的对于每个i具有s[i]=s[n+1-i]的字符串。
  • 回文半径:对于一个回文中心i,如果它的半径为r,如果它为奇数长度的回文串的中心,则说明[i - r+1,i+r - 1]为一个回文串。如果i是偶数长度的回文中心,则回文半径没有意义(Manacher算法会解决这个问题)。
  • 回文的递归性质:某个点的回文半径相比关于某个回文中心的点的回文半径一定相等或更大。
    举个例子,对于回文串ABACABAC,第二个B的回文半径至少是第一个B的回文半径。

02 Manacher算法
前面说过,回文半径对于偶数长度的回文的中心没有意义,例如ABBA中的B就不存在回文半径。
为了解决这个问题,Manacher发明了一种算法,他将所有的回文串都转化为了奇数长度的回文串。
方法就是在字符串中间和头尾插入特殊字符,例如原字符串为ABBA,转换后变为^#A#B#B#A#$ 。
Manacher算法是一种O(n)复杂度计算字符串中每个位置作为回文中心的回文半径的算法。
位置i的回文半径以p[i]表示,意思是在转换后的字符串中[i - p[i]+1,i + p[i]-1]是回文的。

步骤

  1. 字符串预处理
  2. 初始化变量
  3. 遍历字符串计算回文半径
  4. 还原结果

例题

题目描述
给出一个只由小写英文字符 a,b,c,…y,z 组成的字符串 S ,求 S 中最长回文串的长度 。

字符串长度为 n。

输入格式
一行小写英文字符 a,b,c,⋯,y,z 组成的字符串 S。

输出格式
一个整数表示答案。

输入输出样例
输入

aaa

输出

3

说明/提示
1≤n≤1.1×1e7。

#include<bits/stdc++.h>
using namespace std;string Get_new(string& str) {string temp = "#";for (int i = 0; str[i]; ++i) {(temp += str[i]) += "#";}return temp;
}int main() {string str;cin >> str;// 1.字符串预处理str = Get_new(str);// 动态分配一个数组 r,用于存储每个位置的回文半径// 数组长度为处理后字符串的长度int* r = (int*)calloc(sizeof(int), str.size());//2.初始化变量// c 表示当前最大回文串的中心位置int c = 0;// ans 用于记录最大回文半径int ans = 0;// 从第二个字符开始遍历处理后的字符串// 3.遍历字符串计算回文半径for (int i = 1; str[i]; ++i) {// 如果当前位置 i 在以 c 为中心的回文串范围内if (c + r[c] > i) {// 利用回文串的对称性,计算 r[i] 的初始值// r[2 * c - i] 是 i 关于 c 的对称位置的回文半径// c + r[c] - i 是 i 到当前回文串右边界的距离r[i] = min(r[2 * c - i], c + r[c] - i);}// 尝试扩展以 i 为中心的回文串// 检查左右字符是否相等while (i - r[i] >= 0 && str[i - r[i]] == str[i + r[i]]) {++r[i];}// 因为之前扩展时多算了一次,所以这里要减 1--r[i];// 如果以 i 为中心的回文串右边界超过了当前最大回文串的右边界//4.还原结果if (i + r[i] > c + r[c]) {// 更新最大回文串的中心位置为 ic = i;}// 更新最大回文半径ans = max(ans, r[i]);}// 输出最大回文半径cout << ans << endl;// 释放动态分配的内存free(r);return 0;
}
http://www.dtcms.com/a/481062.html

相关文章:

  • php 上传移动到网站根目录广告设计软件哪个好用
  • 一个公司设计网站怎么做网站跳到另一个网站怎么做
  • 网站建设线上线下双服务器做女装代理需要自建网站么
  • 东莞大朗网站建设哪家口碑好wordpress 纯净版下载地址
  • 网校 039 网站建设多少钱手机触屏网站
  • 自己创造网站定制型网站开发
  • 苏州市建设交通高等学校网站网站没有权重
  • 建站工具 wordpress设计师常用的设计论坛
  • html5网站设计欣赏做相似网站
  • 广州网站建设公司好吗平台网站
  • 北京市网站建设 维护推荐做网站看什么书好
  • 电子商务网站建设服务外包wordpress serene
  • 基于php的网站开发流程图北京发布重磅消息
  • 上海专业网站制作设计地方建立网站做SEM
  • 湖南seo优化哪家好长沙seo外包服务
  • 企业网站优化设计的含义济宁市做网站
  • 网站开发经理中海外交通建设有限公司网站
  • 毕业设计网站题目网站服务器维护方案
  • 怎么设置自己的网站中山seo技术
  • 南阳河南网站建设价格做网站的公司 经营范围
  • 快站建站怎么收费的家装室内设计案例分析图文
  • 青岛做公司网站注册的多吗用花瓣网站上的图片做游戏行吗
  • 甘肃省两学一做专题网站天津智能网站建设方案
  • 中煤浙江基础建设有限公司网站网站建设汇卓
  • 网站如何强制修改主页 源码百度响应式网站怎么做
  • 纯静态做企业网站做落地页素材在什么网站上找
  • 网站建设倒计时模板阿泰勒北京网站建设
  • 南京网站建设知识最近军事新闻热点
  • pc网站如何做sp怎样在工商局网站做公示
  • 通州手机网站建设东莞市公共资源交易中心官网