一、基本概念

最长公共回文子串(Longest_Common_Palindrome_Substring):两个字符串中最长的公共子串并且是回文字符串的子串

二、算法

三、代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef unsigned int uint;
typedef pair<int,int> pii;const int N=2e5+5;
int ch[N][26],fa[N],len[N],ct,last;
int tag[N];
void ini();
int newnode();
void extend(int,int);
char s[N];
void work();int main(){
//    freopen("in.txt","r",stdin);ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
//    int T;cin>>T;
//    while(T--)work();
}
void work(){while(cin>>s+1){ini();for(int i=1;s[i];i++) extend(s[i]-'a',i),tag[last]=1;cin>>s+1;int ans=0;last=0;for(int i=1;s[i];i++){extend(s[i]-'a',i);if(tag[last]) ans=max(ans,len[last]);}cout<<ans<<'\n';}
}
void extend(int c,int i){int p=last;while(s[i-len[p]-1]!=s[i]) p=fa[p];if(!ch[p][c]){int np=newnode(),q=fa[p];while(s[i-len[q]-1]!=s[i]) q=fa[q];fa[np]=ch[q][c],ch[p][c]=np;len[np]=len[p]+2;}last=ch[p][c];
}
void ini(){fa[0]=fa[1]=1;len[1]=ct=-1;last=0;newnode(),newnode();
}
int newnode(){memset(ch[++ct],0,sizeof(ch[0]));tag[ct]=0;return ct;
}

四、例题

https://ac.nowcoder.com/acm/contest/908/H

五、参考文章

https://blog.csdn.net/qq_36551189/article/details/79245675?tdsourcetag=s_pcqq_aiomsg

最长公共回文子串(Longest_Common_Palindrome_Substring)相关推荐

  1. LeetCode【5--最长的回文子串】 LeetCode【6--Z字形变换】

    最长的回文子串 题目描述 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 解题思路 可以跟无重复的最长子串一样,用一个滑动窗口,只不过这个窗口的右边界往右,左 ...

  2. BZOJ2565 最长双回文子串 回文自动机,回文树

    bzoj2565: 最长双回文串 题意 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为"abc",逆序为"cba" ...

  3. leetcode 5 查找最长的回文子串

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...

  4. Java中找出s字符串的回文_给定一个字符串 s,找到 s 中最长的回文子串。

    题目描述:给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 思路: 判断s[i..j]是否是回文字符串,依赖于s[i+1...j-1],这种一个问题的结果依赖于 ...

  5. 算法题——给你一个字符串s,找到s中最长的回文子串。

    一.给你一个字符串 s,找到 s 中最长的回文子串. 示例 1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符 ...

  6. C++ leetcode 5. 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

    一.思路 从第二个遍历到最后一个,然后每次遍历从中间往两边找,这样可以找到所有的回文串 string longestPalindrome(string s) {int left;int right;i ...

  7. 给定一个字符串s,找出s中最长的回文子串,你可以假设s的最大长度是1000。

    找出一个字符串中最大的回文字符串 思路:从第一个字符串开始,一次向左向右判断,如果相同就继续向左向右直到不相同或者越界为止,并判断最大长度,依次更新最大长度值,并记录最大长度值的开始为止.示例代码如下 ...

  8. 第六周作业(等值字串,KMP匹配,大整数相乘,最长公共子串,判断两个字符串是否匹配,最长回文子串,年号字串)

    目录 1.等值字串 2.KMP匹配 3.大整数相乘 4.最长公共子串 5.判断两个字符串是否匹配 6.最长回文字串 7.年号字串 补发一下,原来忘记发了. 1.等值字串 [问题描述]如果字符串的一个子 ...

  9. 牛客题目——最长公共子串、最长回文子串、兑换零钱

    文章目录 题目1--最长公共子串 解题思路 代码实现 题目2--最长回文子串 解题思路 代码实现 题目3--兑换零钱 解题思路 代码实现 题目1--最长公共子串 给定两个字符串str1和str2,输出 ...

最新文章

  1. oracle如何自动分析报告,ORACLE 性能分析报告的获取
  2. 微信七年回顾:历经多少质疑和差评,才配拥有今天的强大
  3. springMVC,mybatis配置事务
  4. VC++6绘制GIS地图不同类型的点
  5. 桥接路由器总是掉线_多路由的无线桥接步骤
  6. 江苏省2013年会计从业资格考试《会计基础》全真模拟试题
  7. boost::hana::replicate用法的测试程序
  8. 【SpringBoot实战】员工部门管理页面,增删改查,含源码
  9. Marketing Cloud API消费entity unsupported format错误消息的处理
  10. 回顾2012;展望2013
  11. 位置服务器的操作方法,hpproliantml系列服务器上机架操作方法.doc.docx
  12. Microsoft.System.Center.Operations.Manager.2007 中文版完整光盘下载地址
  13. 高斯克吕格投影中有关带号与经度的关系
  14. jetson nano使用python读取解析GPS数据(GPRMC,GPGGA)。
  15. c语言可以绘制中国地图源码,echarts画中国地图,省市区地图分享
  16. 如何应对阿里、美团、Oracle等大厂的面试刁难?
  17. win10 apex安装
  18. 从程序员到架构师的转型思维的转变 NLP思维利器(二)
  19. .Net 垃圾回收机制原理(二)
  20. 金纳米粒子修饰MIL-101骨架材料(AuNPs/MIL-101)/负载COF-TpPa-1(Au NPs/COF-TpPa-1)|齐岳试剂

热门文章

  1. 文件包含漏洞不能包含php,ThinkPHP5漏洞分析之文件包含
  2. mysql 批量修改数据库存储引擎_mysql批量修改表存储引擎
  3. 【数据结构与算法】常用算法
  4. 下载Java Jar包的网站(托管厂库)
  5. idea启动webservice_idea使用springboot的webservice基于cxf
  6. spark如何防止内存溢出_spark开发十大原则
  7. 手机空间定位_你或许被默默定位很久了却不知情,盘点生活中各类定位技术
  8. java切面不需要接口了吗_使用java语言,如何对一个类中的静态方法做切面编程?...
  9. 微信小程序学习笔记(五)
  10. ​AAAI 2022 | 基于强化学习的视频弹幕攻击