1616: 最长回文串
Time Limit: 1 Sec Memory Limit: 128 MB
[Submit][Status][Web Board]
Description

求一个字符串的最长回文串

Input

第一行输入n

接下来n行每行每行一个字符串长度<=100000

Output

输出最长回文串的长度

Sample Input

3
abababa
aaaabaa
acacdas

Sample Output

7
5
3

HINT

不要想太多 Water

Source
/*
提示很水,是因为这题虽然数据大但是常规方法暴力求解也不会超时
我写这题主要是巩固**马拉车算法**
*/
Ac_code:
1.马拉车算法,时间复杂度为线性的,时间复杂度O(N)

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int Manacher(string s)
{string t;t += '$';for(int i = 0; i < s.size(); i++){t += '#';t += s[i];}t += '#';int p[200005] = {0};int mx = 0,id = 0,resLen = 0;//resCenterfor(int i = 1; i < t.size(); i++){p[i] = mx > i ? min(p[2*id-i],mx-i) : 1;while(t[i+p[i]] == t[i-p[i]]) p[i]++;if(mx < i+p[i]){mx = i + p[i];id = i;}if(resLen < p[i]){resLen = p[i];//resCenter = i;}}return resLen;
}
int main()
{int n;cin>>n;while(n--){string s;cin>>s;cout<<Manacher(s)-1<<endl;//最长回文子串长度为t串最长回文半径-1//最长回文子串的首地址为(resLen - resCenter)/2}return 0;
}

2.中心扩展法

#include <stdio.h>
#include <string.h>
char s[100005],t[200005];
int solve(char s[])
{int k = 0;t[k++] = '#';for(int i = 0; i < strlen(s); i++){t[k++] = s[i];t[k++] = '#';}int resLen = 0;for(int i = 1; i < strlen(t); i++){int p = i,q = i,sum = 0;while(t[p] == t[q] && p >= 0 && q < strlen(t)){sum++;p--;q++;}if(sum > resLen)resLen = sum;}return resLen;
}
int main()
{int n;scanf("%d",&n);while(n--){scanf("%s",s);printf("%d\n",solve(s)-1);}return 0;
}

1616: 最长回文串(马拉车算法)相关推荐

  1. 最长回文串 马拉车算法 C++

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

  2. 1112个人赛,最长回文串常见算法讨论

    ps.此贴大部分文字与代码来自网上,我只是取长补短整理了下 S="c a b a"  那么  S' = "a b a c", 这样的情况下 S和 S'的最长公共 ...

  3. 最长回文子串(马拉车算法)

    给出一个字符串:cabadabae 我们不难看出其回文子串:aba,abadaba 这边简单介绍两种做法: 1.暴力:找出所有字串,然后依次判断是否为回文串,最后找出最长的回文子串 2.中心扩展:遍历 ...

  4. 通俗易懂的最长回文串图解、说明及Java代码(中心扩散法和Manacher算法)

    1. 回文串 作为程序员,回文串这个词已经见怪不怪了,就是一个字符串正着读和反着读是一样的,形式如abcdcba.bbaabb.这里涉及到奇回文和偶回文,奇回文指回文串的字符数是奇数,偶回文指回文串的 ...

  5. java 最长回文串_通俗易懂的最长回文串图解、说明及Java代码(中心扩散法和Manacher算法)...

    1. 回文串 作为程序员,回文串这个词已经见怪不怪了,就是一个字符串正着读和反着读是一样的,形式如abcdcba.bbaabb.这里涉及到奇回文和偶回文,奇回文指回文串的字符数是奇数,偶回文指回文串的 ...

  6. 最长回文 HDU - 3068(求最长回文串的长度【马拉车算法Manacher】)

    马拉车算法 Manacher's Algorithm 是用来查找一个字符串的最长回文子串的线性方法,由一个叫 Manacher 的人在 1975 年发明的,这个方法的最大贡献是在于将时间复杂度提升到了 ...

  7. Manacher's Algorithm 马拉车算法(最长回文串)

    这个马拉车算法Manacher's Algorithm是用来查找一个字符串的最长回文子串的线性方法,由一个叫Manacher的人在1975年发明的,这个方法的最大贡献是在于将时间复杂度提升到了线性,这 ...

  8. 【HDU - 3068】最长回文(Manacher算法,马拉车算法求最长回文子串)

    题干: 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.  回文就是正反读都是一样的字符串,如aba, abba等 Input 输入有多组case,不超过120组 ...

  9. 求最长回文串-从动态规划到马拉车之路(下)

    预备知识: (1)在一个数轴上有两点i和j(i<=j)关于点m对称,那么有 i = 2m-j: 证明: 因为 i<=j 且 i 和 j 关于 m 对称,那么有 (i + j)/ 2 = m ...

最新文章

  1. 批量修改文件权限 和所有者 chown nobody:nobody * -R chmod 775 * -R
  2. DNS自述:我是如何为域名找到家的
  3. Flask爱家租房--发布新房源(保存房屋基本信息)
  4. Java 语言实现的 I/O 模型
  5. efcore mysql坑,.net core 2.1 使用ef DBfirst 生成 实体映射遇到的坑 (Pomelo.EntityFrameworkCore.MySql 篇)...
  6. VS2005 中关于“LC.EXE已退出,代码为 -1”的错误解决方法。
  7. UE4之判断点是否在矩形内
  8. python可视化迷宫求解_用python求解迷宫
  9. win10字体模糊设置
  10. Eclipse安装中文简体语言包(官方下载安装教程)
  11. 电路基础学习笔记2:串并联电路
  12. iwconfig工具源码
  13. VMware虚拟机鼠标失灵怎么办
  14. unity中三种数据存储方式ScriptableObject,Json,Xml和Dictionary的序列化
  15. everedit 格式化json_Bracket 使用指南
  16. 联想笔记本v110_联想V110系列笔记本如何设置u盘启动教程
  17. 阿里cdn请求原理以及缓存机制
  18. python简易自动化之pyautogui 2020-12-19
  19. 程序员约架事件中,薛非到底是因为不会用Github还是不会写Tokenizer而没有应战?...
  20. 好莱坞美剧电影英雄主义价值观的问题

热门文章

  1. python的特殊类_python - 类的特殊成员方法
  2. 从零开始学习docker(二十二)容器监控
  3. 这也太狠了吧!500套Java实用代码,不论工作学习都能用到!
  4. 提前(qian)庆祝 “1024程序员节” ,价值 1500 元的京东卡免费送!
  5. opencv python考勤_Python基于Opencv来快速实现人脸识别过程详解(完整版)
  6. jquery页面跳转带cookie_JS 如何创建、读取和删除cookie
  7. 2018南京java工资_2018年Java开发工程师的待遇如何?
  8. 机器学习实战-KNN算法-20
  9. mysql字段名explain_Mysql中explain用法和结果字段的含义介绍
  10. 济南女子学院计算机科学与技术,山东女子学院计算机科学与技术专业2016年在山东理科高考录取最低分数线...